<?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>136031</bug_id>
          
          <creation_ts>2014-08-17 15:02:02 -0700</creation_ts>
          <short_desc>Web Inspector: rename Inspector::TypeBuilder to Inspector::Protocol</short_desc>
          <delta_ts>2014-08-25 11:39:37 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1029685</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-17 15:02:02 -0700</bug_when>
    <thetext>TypeBuilder is a an implementation detail, reflecting that protocol objects are shape-checked. Protocol makes it clearer that these objects are marshalled types sent to or received from the inspector protocol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029686</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-08-17 15:02:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/18044560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029693</commentid>
    <comment_count>2</comment_count>
      <attachid>236740</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-17 21:18:56 -0700</bug_when>
    <thetext>Created attachment 236740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029704</commentid>
    <comment_count>3</comment_count>
      <attachid>236741</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-17 22:48:37 -0700</bug_when>
    <thetext>Created attachment 236741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029966</commentid>
    <comment_count>4</comment_count>
      <attachid>236741</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-08-18 23:50:52 -0700</bug_when>
    <thetext>Comment on attachment 236741
Patch

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

Rubber-stamp here assuming you can get it applying and building in EWS.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Rename TypeBuilder namespace to Protocol. Disambiguate where
&gt; +        necessary. Also rename InspectorTypeBuilder to ProtocolTypes.

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031142</commentid>
    <comment_count>5</comment_count>
      <attachid>237083</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-25 07:21:42 -0700</bug_when>
    <thetext>Created attachment 237083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031166</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-25 10:30:30 -0700</bug_when>
    <thetext>Attachment 237083 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_header.py:52:  [BackendDispatcherHeaderGenerator.generate_output] Instance of &apos;BackendDispatcherHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:54:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:67:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:278:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:301:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:45:  [ProtocolTypesHeaderGenerator.output_filename] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:48:  [ProtocolTypesHeaderGenerator.generate_output] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;domains_to_generate&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:49:  [ProtocolTypesHeaderGenerator.generate_output] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;calculate_types_requiring_shape_assertions&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:57:  [ProtocolTypesHeaderGenerator.generate_output] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:60:  [ProtocolTypesHeaderGenerator.generate_output] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:61:  [ProtocolTypesHeaderGenerator.generate_output] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:67:  [ProtocolTypesHeaderGenerator.generate_output] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;_input_filepath&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:76:  [ProtocolTypesHeaderGenerator.generate_output] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:249:  [ProtocolTypesHeaderGenerator._generate_struct_for_enum_type] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;encoding_for_enum_value&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:275:  [ProtocolTypesHeaderGenerator._generate_builder_setter_for_member] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:298:  [ProtocolTypesHeaderGenerator._generate_unchecked_setter_for_member] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:319:  [ProtocolTypesHeaderGenerator._generate_forward_declarations_for_binding_traits] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;domains_to_generate&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:320:  [ProtocolTypesHeaderGenerator._generate_forward_declarations_for_binding_traits.&lt;lambda&gt;] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;type_needs_shape_assertions&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py:332:  [ProtocolTypesHeaderGenerator._generate_forward_declarations_for_binding_traits] Instance of &apos;ProtocolTypesHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:114:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/inspector/InspectorProtocolTypes.h:43:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:55:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:115:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:150:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:44:  [ProtocolTypesImplementationGenerator.output_filename] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:47:  [ProtocolTypesImplementationGenerator.generate_output] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;domains_to_generate&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:48:  [ProtocolTypesImplementationGenerator.generate_output] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;calculate_types_requiring_shape_assertions&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:53:  [ProtocolTypesImplementationGenerator.generate_output] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:55:  [ProtocolTypesImplementationGenerator.generate_output] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;_input_filepath&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:59:  [ProtocolTypesImplementationGenerator.generate_output] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:74:  [ProtocolTypesImplementationGenerator._generate_enum_mapping] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:78:  [ProtocolTypesImplementationGenerator._generate_enum_mapping] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;assigned_enum_values&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:89:  [ProtocolTypesImplementationGenerator._generate_open_field_names] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;domains_to_generate&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py:99:  [ProtocolTypesImplementationGenerator._generate_builders_for_domain.&lt;lambda&gt;] Instance of &apos;ProtocolTypesImplementationGenerator&apos; has no &apos;type_needs_shape_assertions&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/inspector/InspectorReplayAgent.h:107:  The parameter name &quot;segmentState&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 36 in 87 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>1031192</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-25 11:39:37 -0700</bug_when>
    <thetext>Committed r172930: &lt;http://trac.webkit.org/changeset/172930&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236740</attachid>
            <date>2014-08-17 21:18:56 -0700</date>
            <delta_ts>2014-08-17 22:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136031-20140817211756.patch</filename>
            <type>text/plain</type>
            <size>513212</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODNmODRhZTNhYzVjZjg4YTAzNGUzZjY2ODI2MDkzMTA2YmE5MDVhLi45NzU4ZDM2OWE5YzhkMDQy
ZTA2YjI3ZDcxMzdiNDk2YzJkZTQ1NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjcgQEAKKzIwMTQtMDgtMTcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyIHRvIEluc3BlY3Rvcjo6UHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBUeXBlQnVpbGRlciBuYW1lc3BhY2UgdG8gUHJv
dG9jb2wuIERpc2FtYmlndWF0ZSB3aGVyZQorICAgICAgICBuZWNlc3NhcnkuIEFsc28gcmVuYW1l
IEluc3BlY3RvclR5cGVCdWlsZGVyIHRvIFByb3RvY29sVHlwZXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6bWVzc2FnZVNv
dXJjZVZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6bWVzc2FnZVR5cGVWYWx1ZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Om1lc3NhZ2VMZXZlbFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6YnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnNlYXJjaEluVGV4dEJ5TGluZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3Jp
cHQ6OmV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxG
dW5jdGlvbk9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldFBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBD
YWxsRnJhbWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmpl
Y3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3Jp
cHRCYXNlOjptYWtlRXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6U2NyaXB0Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
OmJ1aWxkSW5zcGVjdG9yQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpicmVh
a3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0
YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpjdXJyZW50Q2FsbEZyYW1lcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpidWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVj
dCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVBy
b2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRFcnJvclJhbmdlT2JqZWN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJp
YWJsZXNBdE9mZnNldHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2luaXRf
Xy5weToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6CisgICAgICAgIChCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5Ogor
ICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJh
dGVfYXN5bmNfZGlzcGF0Y2hlcl9jbGFzc19mb3JfZG9tYWluKToKKyAgICAgICAgKEJhY2tlbmRE
aXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb25fZm9yX2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6CisgICAgICAgIChG
cm9udGVuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3Jf
ZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlw
ZV9idWlsZGVyX2hlYWRlci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5weTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weToKKyAg
ICAgICAgKEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZSk6CisgICAgICAg
IChHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGVfbWVtYmVyKToKKyAgICAg
ICAgKEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3JfdHlwZV93aXRoX25hbWUpOgorICAgICAgICAo
R2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9mb3JtYWxfb3V0X3BhcmFtZXRlcik6CisgICAgICAg
IChHZW5lcmF0b3IudHlwZV9zdHJpbmdfZm9yX2Zvcm1hbF9hc3luY19wYXJhbWV0ZXIpOgorICAg
ICAgICAoR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9zdGFja19pbl9wYXJhbWV0ZXIpOgorICAg
ICAgICAoR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKToKKyAg
ICAgICAgKEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlci5hc3NlcnRp
b25fbWV0aG9kX2Zvcl90eXBlKToKKyAgICAgICAgKEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9k
X2Zvcl90eXBlX21lbWJlcik6CisgICAgICAgIChHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmlu
Z19mb3JfdHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0
cmluZ19mb3JfdHlwZV9tZW1iZXIpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBsYXRlcy5weToKKyAgICAgICAgKEluc3BlY3Rvcik6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LWJpbmRpbmdzLnB5OgorICAgICAgICAoZ2VuZXJhdGVfZnJvbV9zcGVjaWZpY2F0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFz
eW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25h
bC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlv
bmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUu
anNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpz
b24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5j
cHA6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JW
YXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5jcHA6CisgICAg
ICAgIChKU0M6OlR5cGVTZXQ6OmFsbFByaW1pdGl2ZVR5cGVOYW1lcyk6CisgICAgICAgIChKU0M6
OlR5cGVTZXQ6OmFsbFN0cnVjdHVyZVJlcHJlc2VudGF0aW9ucyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVNoYXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9UeXBlU2V0Lmg6CisKIDIwMTQtMDgtMTUgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hp
bmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJld3JpdGUgQ29kZUdlbmVyYXRv
ckluc3BlY3RvciB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwMGQw
MzY1YjRiNDJhMTk5YzY5ZGVkMzRmYmIxZjdlNGRmZTkyZGYuLmI3ZjI2ZmE1YWQ1ZGYxZDYxMjE0
MzhmMmQ3OTcwNGY1M2MzMWU0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjcgQEAKKzIwMTQt
MDgtMTcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyIHRvIEluc3BlY3Rv
cjo6UHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtZSBUeXBlQnVpbGRlciBuYW1lc3BhY2UgdG8gUHJvdG9jb2wuIERpc2FtYmlndWF0
ZSB3aGVyZQorICAgICAgICBuZWNlc3NhcnkuIEFsc28gcmVuYW1lIEluc3BlY3RvclR5cGVCdWls
ZGVyIHRvIFByb3RvY29sVHlwZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oOiBSZW1vdmVkLgorICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0SW1wbCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRB
cHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5
Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRT
dHlsZUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFs
bFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHls
ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29s
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0
b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpjb2xs
ZWN0U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnZp
YUluc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmRldGVjdE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZs
b3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6Z2V0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojps
YXllcnNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXll
ckhpZXJhcmNoeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkT2JqZWN0Rm9yQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1l
VHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZEluc3BlY3Rvck9iamVjdEZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNw
ZWN0b3JPYmplY3RGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9yU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9yU2VnbWVudFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZUlucHV0
VG9KU09ORnVuY3Rvcjo6U2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZUlucHV0VG9KU09ORnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnN3aXRjaFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omluc2VydFNlc3Npb25TZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpyZW1vdmVTZXNzaW9uU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y3VycmVudFJlcGxheVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpnZXRBdmFpbGFi
bGVTZXNzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omdl
dFNlZ21lbnREYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZEluaXRpYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2Vi
U29ja2V0RnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRTb3VyY2VSYW5nZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE1lZGlhT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxNZWRpYUxpc3RDaGFpbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVk
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3Jz
RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6
OmNhbkJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVjb3JkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZW5kRXZlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKwogMjAxNC0wOC0xNSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCB1c2UgRmxvYXRSZWN0OjppbmZpbml0
ZVJlY3QoKSB0byBmbGFnIGZ1bGwgcmVwYWludHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggODE1YTIyYjFkMmIwMTQ0OTk4MmJhY2IzNzRjYWM3MTM4NWRiMDMzNy4uZjYx
N2RhNWEyNjZlOTg3MTM4MmU5MzA1YjhiNTgzMGQxYmM4OGVlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtOTE0LDggKzkxNCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9J
TlNQRUNUT1JfUFJPVE9DT0xfU0NSSVBUUwogICAgICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9S
X1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1l
bnRhdGlvbi5weQogICAgICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9j
b2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CiAgICAgJHtKYXZh
U2NyaXB0Q29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfZnJvbnRl
bmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQotICAgICR7SmF2YVNjcmlwdENvcmVfSU5T
UEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIu
cHkKLSAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9n
ZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkKKyAgICAke0phdmFTY3JpcHRD
b3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBl
c19oZWFkZXIucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0v
Y29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQogICAgICR7
SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRvci5w
eQogICAgICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkKICAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJ
UFRTX0RJUn0vY29kZWdlbi9fX2luaXRfXy5weQpAQCAtOTQ0LDEyICs5NDQsMTIgQEAgYWRkX2N1
c3RvbV9jb21tYW5kKAogICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAgICAgICAg
ICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3Bl
Y3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNGcm9udGVuZERpc3Bh
dGNoZXJzLmgKLSAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCi0gICAgICAgICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmgKKyAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcAorICAgICAgICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JK
U1Byb3RvY29sVHlwZXMuaAogICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJJTlNQRUNU
T1JVSV9ESVJ9L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFu
ZHMuanMKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKUy5qc29uCiAgICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX0lO
U1BFQ1RPUl9QUk9UT0NPTF9TQ1JJUFRTfQotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJM
RX0gJHtKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWluc3Bl
Y3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSAtLW91dHB1dERpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKUy5qc29uICYmIG1rZGlyIC1w
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlz
cGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5
cGVCdWlsZGVycy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFuZHMuanMgJHtERVJJVkVEX1NPVVJDRVNf
V0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sCisgICAgQ09NTUFORCAk
e1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJ
Un0vZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5IC0tb3V0cHV0RGlyICIk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLWZyYW1ld29yayBKYXZhU2Ny
aXB0Q29yZSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpT
Lmpzb24gJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9p
bnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5k
RGlzcGF0Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlNQcm90b2NvbFR5cGVzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX1dF
QklOU1BFQ1RPUlVJX0RJUn0vVXNlckludGVyZmFjZS9Qcm90b2NvbCAmJiBjcCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpz
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQklOU1BFQ1RPUlVJX0RJUn0vVXNlckludGVyZmFjZS9Qcm90
b2NvbAogICAgIFZFUkJBVElNKQogZmlsZShNQUtFX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNF
U19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3RvcikKIApAQCAtOTY1LDE0ICs5NjUsMTQgQEAg
YWRkX2N1c3RvbV9jb21tYW5kKAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3Bl
Y3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAKLSAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9J
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuY3BwCiAgICAg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkK
IAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTQmFja2VuZERpc3Bh
dGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3Rvci9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAotICAgICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJz
LmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9J
bnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IGQzM2M5NTE4ZmMyOTI4MWM0NGIwNzI4ZWExODRhNjYxYTg0
Yzk2NGQuLjVhNWRhYzM2MjI0OTA2ZGExMTgyOGYxMTY4ZmVmOTU3ZGEwYTZhMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjgsOCArMTI4LDggQEAg
SU5TUEVDVE9SX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAogCSQoSmF2YVNjcmlwdENvcmUpL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5IFwKIAkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IFwKIAkkKEphdmFTY3JpcHRD
b3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkgXAotCSQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSBcCi0JJChKYXZhU2Ny
aXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJf
aW1wbGVtZW50YXRpb24ucHkgXAorCSQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IFwKKwkkKEphdmFTY3Jp
cHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVz
X2ltcGxlbWVudGF0aW9uLnB5IFwKIAkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgXAogCSQoSmF2YVNjcmlwdENvcmUpL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5IFwKIAkkKEphdmFTY3JpcHRDb3Jl
KS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL21vZGVscy5weSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBjMGRjYmRjMjlkYzA5YmYxNzBjNmJmNWQ2NGRhNTVl
M2RjODFkNTkzLi5kNGJkNGIxZDAxYTEwY2M0YTZkMWEyNzJiYTRmODQxNzU3ZDg2ZGI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTgxNyw3ICs4MTcsNyBAQCDv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ceWFyclxZYXJyU3ludGF4Q2hlY2tlci5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlz
cGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIiAvPgog
ICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTgzMSw3ICs4MzEsNyBAQCDvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
SlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgLz4K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0
b3JKU1R5cGVCdWlsZGVycy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNHbG9iYWxPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNPTk9iamVjdC5sdXQuaCIgLz4KQEAgLTEyNDcsNyAr
MTI0Nyw3IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JF
bnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhv
c3RQcm90b3R5cGUuaCIgLz4KQEAgLTE2MjAsOCArMTYyMCw4IEBAIO+7vzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XHNjcmlwdHNcY29kZWdlblxnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRp
b24ucHkiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdl
blxnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weSIgLz4KICAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRlX2Zyb250ZW5kX2Rp
c3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5IiAv
PgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJh
dGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5IiAvPgorICAgIDxOb25lIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVh
ZGVyLnB5IiAvPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVn
ZW5cZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkiIC8+CiAgICAgPE5v
bmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0b3IucHkiIC8+
CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0
b3JfdGVtcGxhdGVzLnB5IiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3Jp
cHRzXGNvZGVnZW5cbW9kZWxzLnB5IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGNmYWYzNzY0MGEyMzAwNWMzMGJkOGFlZTU2Yjg4
ZGRjNzFmM2U1ODUuLjUxYjVkYmQzYzQ1NWE5YzEwNzUxMjdlYTRmMjA1NjE0ZTc0ZDY2MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAg
LTEzODksNyArMTM4OSw3IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCI+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVj
dG9ySlNQcm90b2NvbFR5cGVzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0
XEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCI+CkBAIC0yMTgwLDcgKzIxODAsNyBAQCDv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIj4KICAgICAg
IDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
Ij4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgpA
QCAtMjkzNCw3ICsyOTM0LDcgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJ
bnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckpTUHJvdG9jb2xUeXBlcy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNHbG9iYWxPYmplY3QubHV0LmgiPgpAQCAtNDA5MiwxMCArNDA5Miwx
MCBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVfZnJvbnRlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvclxz
Y3JpcHRzXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVy
LnB5Ij4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdl
bmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rv
clxzY3JpcHRzXGNvZGVnZW48L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1w
bGVtZW50YXRpb24ucHkiPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRz
XGNvZGVnZW5cZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkiPgogICAg
ICAgPEZpbHRlcj5pbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuPC9GaWx0ZXI+CiAgICAgPC9Ob25l
PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJh
dG9yLnB5Ij4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKaW5kZXggZWI4NGJjMThmZjQzZDJjNzhiNTIy
MmFlZTRlYmVkYTVmYjBhN2EwZS4uYmU0NzdhNDQ4M2I2YTk1MzQ1NjQxMzYyNDNjODJjYWQ5MGE3
OTYwZCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovY29weS1maWxlcy5jbWQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKQEAgLTcxLDcgKzcxLDcgQEAgZm9yICUlZCBp
biAoCiANCiBlY2hvIENvcHlpbmcgSW5zcGVjdG9yIGdlbmVyYXRlZCBmaWxlcyBhcyBpZiB0aGV5
IHdlcmUgcHJpdmF0ZSBoZWFkZXJzLi4uDQogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVj
dG9yeSVcSW5zcGVjdG9ySlMuanNvbiIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwN
Ci14Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KK3hjb3B5IC95ICIlRGVy
aXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIiAiJVByaXZh
dGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KIHhjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJl
Y3RvcnklXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmgiICIlUHJpdmF0ZUhlYWRlcnNE
aXJlY3RvcnklIiA+TlVMDQogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3Rvcnkl
IiA+TlVMDQogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5zcGVjdG9ySlNC
YWNrZW5kQ29tbWFuZHMuanMiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQpAQCAt
ODgsNyArODgsNyBAQCB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxKU1JlcGxh
eUlucHV0cy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JQogDQogZWNobyBDb3B5aW5nIGJ1
aWx0aW5zIGhlYWRlciBhcyBpZiBpdCB3ZXJlIGEgcHJpdmF0ZSBoZWFkZXIuLi4NCiB4Y29weSAv
eSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxKU0NCdWlsdGlucy5oIiAiJVByaXZhdGVIZWFk
ZXJzRGlyZWN0b3J5JSIgPk5VTA0KLXhjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3Rvcnkl
XEJ5dGVjb2Rlcy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTAoreGNvcHkgL3kg
IiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcQnl0ZWNvZGVzLmgiICIlUHJpdmF0ZUhlYWRlcnNE
aXJlY3RvcnklIiA+TlVMDQogDQogZWNobyBDb3B5aW5nIHJlc291cmNlcy4uLg0KIG1rZGlyICIl
UmVzb3VyY2VzRGlyZWN0b3J5JSIgMj5OVUwNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJmNGMwYjhjZjAyMTNhMjI1NDJhMDZmYmQ0MTRhMGNkZTg4ZDQ1ZDQuLjBlM2Y0Yjc4ZDhi
ZGNmNjI0YTliMTVkZGE4YmM2ZmMxYzIyYzRiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNjM0LDggKzE2MzQsOCBAQAogCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0MzgyMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0
b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE1MzI0Mzg5MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JK
U0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUzMjQzODMxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJv
bnRlbmREaXNwYXRjaGVycy5jcHAgKi87IH07CiAJCUE1MzI0MzhBMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzg0MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUzMjQzODUxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTVHlwZUJ1
aWxkZXJzLmNwcCAqLzsgfTsKLQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBlQnVpbGRl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
NTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzg1MTg1
NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuY3BwICovOyB9OworCQlB
NTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4NjE4NTY4
MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUzMjQzOTQxODU2OTcwOTAwMkVE
NjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzOTExODU2OTZFNjAwMkVENjky
IC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5
MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUzMjQzOTUxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24g
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUzQ0Uw
ODUxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzQ0UwODExOEJDMUE1NjAwQkVERjc2
IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwICovOyB9OwpAQCAtMTY1NCw3ICsxNjU0LDcgQEAKIAkJ
QTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTM0M0Y3NzE4QTE3
NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTVEOTNBNTE4NTAxMkE4MDA0MDBE
RUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuY3BwICovOyB9OwogCQlBNTVEOTNBNjE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTVEOTNBNDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTU1RDkzQUMx
ODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQg
LyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTdE
MjNFNTE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFMzE4OTBDRUJG
MDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgKi87IH07CiAJCUE1N0QyM0U2
MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFNDE4OTBDRUJGMDAzMUM3
RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1N0QyM0U5MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTcxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudC5jcHAgKi87IH07CkBAIC0yMDY3LDggKzIwNjcsOCBAQAogCQlDNDcw
M0NEMDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzQ3MDNDQzUxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hl
cl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDNDcwM0NEMTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfZnJvbnRl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNDcwM0NDNjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfZnJvbnRl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQzQ3MDNDRDIxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zy
b250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDNzE5Mjg0NENDMDAxM0ZCRUEgLyogZ2Vu
ZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDNDcwM0NEMzE5Mjg0NENDMDAx
M0ZCRUEgLyogZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0M4MTkyODQ0Q0MwMDEzRkJFQSAv
KiBnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUM0NzAzQ0Q0MTkyODQ0Q0MwMDEzRkJFQSAvKiBn
ZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDOTE5Mjg0NENDMDAxM0ZCRUEgLyog
Z2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0NzAzQ0QzMTkyODQ0Q0MwMDEzRkJF
QSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDODE5Mjg0NENDMDAxM0ZCRUEgLyog
Z2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0NzAzQ0Q0MTkyODQ0Q0MwMDEzRkJFQSAvKiBn
ZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0M5MTkyODQ0Q0MwMDEzRkJFQSAv
KiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNDcwM0NENTE5Mjg0NENDMDAx
M0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0NBMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0
b3JfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUM0NzAzQ0Q2MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3IucHkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDQjE5Mjg0NEND
MDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDQzE5
Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zMzIwLDggKzMzMjAsOCBAQAogCQlBNTMyNDM4MjE4NTY4
MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTUzMjQzODMxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRl
bmREaXNwYXRjaGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JKU0Zyb250ZW5k
RGlzcGF0Y2hlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTMyNDM4NDE4
NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNTMyNDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySlNUeXBlQnVpbGRl
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTMyNDM4NjE4NTY4MzE3MDAy
RUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTUzMjQz
ODUxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQ
cm90b2NvbFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTMyNDM4RDE4NTY5NkNBMDAyRUQ2OTIg
LyogcHJvdG9jb2wgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmb2xkZXI7IHBhdGggPSBwcm90b2NvbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUzMjQzOTExODU2OTZFNjAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rv
ci1qc29uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRl
LWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUzMjQzOTUxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmpzb247IHBhdGggPSBJbnNwZWN0b3JKUy5qc29uOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzM0MCw3ICszMzQwLDcgQEAKIAkJQTU0Q0YyRjgxODRFQUVEQTAwMjM3RjE5
IC8qIFNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1RDkzQTMxODUwMTJB
ODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTVEOTNBNDE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25D
YWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBE
RUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdEMjNFMzE4OTBDRUJGMDAzMUM3RkEg
LyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU3RDIzRTQxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdEMjNFNzE4OTFCMDc3
MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzQ1LDggKzM3NDUsOCBAQAogCQlDNDcw
M0NDNTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gZ2VuZXJh
dGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OyBwYXRoID0gZ2VuZXJhdGVf
YmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNDcwM0NDNjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfZnJvbnRlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUg
PSBnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weTsgcGF0aCA9IGdlbmVyYXRl
X2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDNDcwM0NDNzE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFt
ZSA9IGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk7IHBhdGgg
PSBnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDNDcwM0NDODE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJh
dGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
bmFtZSA9IGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHk7IHBhdGggPSBnZW5lcmF0ZV90
eXBlX2J1aWxkZXJfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNDcw
M0NDOTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0
aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gZ2VuZXJhdGVfdHlw
ZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5OyBwYXRoID0gZ2VuZXJhdGVfdHlwZV9idWlsZGVy
X2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNDcwM0ND
ODE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gZ2VuZXJhdGVfcHJvdG9jb2xfdHlw
ZXNfaGVhZGVyLnB5OyBwYXRoID0gZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNDcwM0NDOTE5Mjg0NENDMDAxM0ZCRUEgLyog
Z2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IG5hbWUgPSBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weTsgcGF0aCA9IGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNDcwM0NDQTE5Mjg0NENDMDAxM0ZCRUEg
LyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
bmFtZSA9IGdlbmVyYXRvcl90ZW1wbGF0ZXMucHk7IHBhdGggPSBnZW5lcmF0b3JfdGVtcGxhdGVz
LnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNDcwM0NDQjE5Mjg0NENDMDAxM0ZC
RUEgLyogZ2VuZXJhdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0g
Z2VuZXJhdG9yLnB5OyBwYXRoID0gZ2VuZXJhdG9yLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gbW9kZWxzLnB5OyBwYXRoID0gbW9kZWxzLnB5OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUzNSw4ICs0NTM1LDggQEAKIAkJCQlBNTMy
NDM4MjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAq
LywKIAkJCQlBNTMyNDM4MzE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmNwcCAqLywKIAkJCQlBNTMyNDM4NDE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVj
dG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggKi8sCi0JCQkJQTUzMjQzODUxODU2ODMxNzAwMkVE
NjkyIC8qIEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCAqLywKLQkJCQlBNTMyNDM4NjE4NTY4
MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAqLywKKwkJCQlBNTMyNDM4
NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcCAqLywKKwkJ
CQlBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgg
Ki8sCiAJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywK
IAkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJCQlC
Qzg3Q0RCODEwNzEyQUNBMDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCAqLywKQEAgLTU2NTcs
NyArNTY1Nyw3IEBACiAJCQkJQTU5M0NGN0IxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmggKi8sCiAJCQkJQTVEMEExQkExODYyMzAxQjAwQzdCNDk2IC8qIElu
c3BlY3RvckVudmlyb25tZW50LmggKi8sCiAJCQkJQTU5NDU1OTQxODI0NzlFQjAwQ0MzODQzIC8q
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovLAotCQkJCUE1NUQ5M0FCMTg1MTRGNzkwMDQw
MERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovLAorCQkJCUE1NUQ5M0FCMTg1MTRGNzkw
MDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8sCiAJCQkJQTU5M0NGODAxODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8sCiAJCQkJQTU5M0NGODExODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oICovLAogCQkJCUE1MDNGQTEzMTg4RTBG
QUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKQEAgLTU3MzAsOCArNTcz
MCw4IEBACiAJCQkJQzQ3MDNDQzUxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLywKIAkJCQlDNDcwM0NDNjE5Mjg0NENDMDAx
M0ZCRUEgLyogZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi8sCiAJCQkJ
QzQ3MDNDQzcxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkgKi8sCi0JCQkJQzQ3MDNDQzgxOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHkgKi8sCi0JCQkJQzQ3MDNDQzkxOTI4NDRDQzAw
MTNGQkVBIC8qIGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJ
CQlDNDcwM0NDODE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVh
ZGVyLnB5ICovLAorCQkJCUM0NzAzQ0M5MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSAqLywKIAkJCQlDNDcwM0NDQTE5Mjg0NENDMDAx
M0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSAqLywKIAkJCQlDNDcwM0NDQjE5Mjg0NEND
MDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5ICovLAogCQkJCUM0NzAzQ0NDMTkyODQ0Q0MwMDEzRkJF
QSAvKiBtb2RlbHMucHkgKi8sCkBAIC02MDMwLDcgKzYwMzAsNyBAQAogCQkJCUMyREE3NzgzMThF
MjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQz
OTQxODU2OTcwOTAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjcxODdDOTgxRTAwODQzQjEwIC8qIGNzc21pbi5w
eSBpbiBIZWFkZXJzICovLAotCQkJCUM0NzAzQ0QzMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0
ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQzQ3MDNDRDMxOTI4
NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBpbiBIZWFk
ZXJzICovLAogCQkJCUM0NzAzQ0QyMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9mcm9udGVu
ZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDND
RDExOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVy
LnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDUxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVy
YXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKQEAgLTYwMzksNyArNjAzOSw3IEBACiAJ
CQkJQzQ3MDNDQzAxOTI4NDQ5NjAwMTNGQkVBIC8qIGdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2Nv
bC1iaW5kaW5ncy5weSBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0QwMTkyODQ0Q0MwMDEzRkJF
QSAvKiBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQlDNDcwM0NDRTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2Vu
ZF9jb21tYW5kcy5weSBpbiBIZWFkZXJzICovLAotCQkJCUM0NzAzQ0Q0MTkyODQ0Q0MwMDEzRkJF
QSAvKiBnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAq
LywKKwkJCQlDNDcwM0NENDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlw
ZXNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKIAkJCQlDNDcwM0NENzE5Mjg0NEND
MDAxM0ZCRUEgLyogbW9kZWxzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEw
MzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtNjQyMywxMCArNjQyMywxMCBAQAogCQkJCUE1MzI0MzhBMTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkQ0REVFMTk4MzJEQzQwMDdENEIxOSAvKiBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDZEREVBMThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlm
aWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM4
QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJGREQwNTE5NkM5MkJGMDA3QTVCRkEgLyogREZH
UGhhbnRvbVJlbW92YWxQaGFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTU1RDkzQUMxODUxNEY3
OTAwNDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3Ry
dWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQjE3QURCNUYzMDA1QUIxNzQgLyog
SW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTY1LDcgKzc5NjUsNyBAQAogCQkJCUE1
N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1MzI0Mzg3MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Jh
Y2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4OTE4NTY4MzM1
MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MEU0QjYx
MTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzg4NTNGOTE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRT
dHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggMDIwM2JjMWE5ZjczNmI0
OGZjMjFlYzExYzhlM2I0OTUwOWQxMDk1OS4uNGI4ZTNjNTY5ZjMyNmMyYTg3YTU4MWEwOWZjM2U2
MWM3Mzk4MTFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHAKQEAgLTEzMSw1NyArMTMxLDU3IEBAIHZvaWQgQ29uc29sZU1lc3Nh
Z2U6OmF1dG9nZW5lcmF0ZU1ldGFkYXRhKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKICAgICB9CiB9
CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlIG1lc3NhZ2VTb3VyY2VWYWx1ZShNZXNzYWdlU291cmNlIHNvdXJjZSkKK3N0YXRp
YyBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlIG1l
c3NhZ2VTb3VyY2VWYWx1ZShNZXNzYWdlU291cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNv
dXJjZSkgewotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6WE1MOiByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6WE1MOwotICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6SlM6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpKYXZhc2NyaXB0OwotICAgIGNhc2UgTWVzc2Fn
ZVNvdXJjZTo6TmV0d29yazogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok5ldHdvcms7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlNvdXJjZTo6Q29uc29sZUFQSTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6
OlN0b3JhZ2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6U291cmNlOjpTdG9yYWdlOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6QXBwQ2Fj
aGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlOjpBcHBjYWNoZTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZzog
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpT
b3VyY2U6OlJlbmRlcmluZzsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkNTUzogcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNT
UzsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5OiByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6U2VjdXJpdHk7Ci0g
ICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOworICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6WE1MOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlNvdXJjZTo6WE1MOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6IHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNl
OjpKYXZhc2NyaXB0OworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TmV0d29yazogcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok5ldHdv
cms7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJOiByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q29uc29sZUFQSTsK
KyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2U6IHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpTdG9yYWdlOworICAgIGNhc2Ug
TWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGU6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpBcHBjYWNoZTsKKyAgICBjYXNlIE1lc3NhZ2VT
b3VyY2U6OlJlbmRlcmluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpTb3VyY2U6OlJlbmRlcmluZzsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6
OkNTUzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpTb3VyY2U6OkNTUzsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5OiByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6U2Vj
dXJpdHk7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjogcmV0dXJuIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOwogICAgIH0K
LSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlNvdXJjZTo6T3RoZXI7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOwogfQogCi1zdGF0aWMgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGUgbWVzc2FnZVR5cGVW
YWx1ZShNZXNzYWdlVHlwZSB0eXBlKQorc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlIG1lc3NhZ2VUeXBlVmFsdWUoTWVzc2FnZVR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpMb2c6IHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlw
ZTo6TG9nOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOiByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkNsZWFyOwotICAgIGNh
c2UgTWVzc2FnZVR5cGU6OkRpcjogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXI7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6RGly
WE1MOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlR5cGU6OkRpclhNTDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUYWJsZTogcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUYWJs
ZTsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUcmFjZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKLSAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpTdGFydEdyb3VwOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7Ci0gICAgY2FzZSBNZXNzYWdl
VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOwotICAg
IGNhc2UgTWVzc2FnZVR5cGU6OkVuZEdyb3VwOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdyb3VwOwotICAgIGNhc2UgTWVz
c2FnZVR5cGU6OkFzc2VydDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpBc3NlcnQ7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6VGlt
aW5nOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlR5cGU6OlRpbWluZzsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlOiByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlBy
b2ZpbGU7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZDogcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlRW5k
OworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkxvZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7CisgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6Q2xlYXI6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6Q2xlYXI7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RGlyOiByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRpcjsKKyAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpEaXJYTUw6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyWE1MOworICAgIGNhc2UgTWVzc2FnZVR5
cGU6OlRhYmxlOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlR5cGU6OlRhYmxlOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRyYWNlOiByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRyYWNl
OworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXA6IHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cDsKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOiByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBz
ZWQ7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RW5kR3JvdXA6IHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW5kR3JvdXA7CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6QXNzZXJ0OiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkFzc2VydDsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpU
aW1pbmc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6VHlwZTo6VGltaW5nOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlByb2ZpbGU6IHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmls
ZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kOiByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGVFbmQ7CiAgICAg
fQotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6TG9nOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOwogfQogCi1zdGF0aWMgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZhbHVl
KE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6TGV2ZWwgbWVzc2FnZUxldmVsVmFsdWUoTWVzc2FnZUxldmVsIGxl
dmVsKQogewogICAgIHN3aXRjaCAobGV2ZWwpIHsKLSAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6TG9n
OiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OkxldmVsOjpMb2c7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6Oldhcm5pbmc6IHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Oldhcm5p
bmc7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkVycm9yOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKLSAgICBjYXNl
IE1lc3NhZ2VMZXZlbDo6RGVidWc6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkRlYnVnOworICAgIGNhc2UgTWVzc2FnZUxldmVs
OjpMb2c6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6TGV2ZWw6OkxvZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6V2FybmluZzogcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6V2Fybmlu
ZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6RXJyb3I6IHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVycm9yOworICAgIGNhc2UgTWVz
c2FnZUxldmVsOjpEZWJ1ZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNv
bnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7CiAgICAgfQotICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKKyAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVs
OjpMb2c7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9y
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9v
bCBnZW5lcmF0ZVByZXZpZXcpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRTb3VyY2UobWVzc2FnZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKICAgICAgICAgLnNldExldmVs
KG1lc3NhZ2VMZXZlbFZhbHVlKG1fbGV2ZWwpKQogICAgICAgICAuc2V0VGV4dChtX21lc3NhZ2Up
OwpAQCAtMTk5LDExICsxOTksMTEgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVu
ZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25zb2xlRnIKICAgICBpZiAo
bV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5q
ZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMtPmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAo
IWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4+IGpzb25BcmdzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6Y3JlYXRlKCk7
CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4ganNvbkFyZ3MgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gTWVzc2FnZVR5cGU6OlRh
YmxlICYmIGdlbmVyYXRlUHJldmlldyAmJiBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpKSB7
CiAgICAgICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdGFibGUgPSBtX2FyZ3Vt
ZW50cy0+YXJndW1lbnRBdCgwKTsKICAgICAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBjb2x1bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSA+IDEgPyBtX2FyZ3Vt
ZW50cy0+YXJndW1lbnRBdCgxKSA6IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7Ci0gICAgICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwVGFibGUodGFibGUsIGNv
bHVtbnMpOworICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcFRh
YmxlKHRhYmxlLCBjb2x1bW5zKTsKICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVl
KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25z
b2xlRnIKICAgICAgICAgICAgICAgICBqc29uQXJncy0+YWRkSXRlbShpbnNwZWN0b3JWYWx1ZSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG1fYXJndW1l
bnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSIsIGdlbmVyYXRlUHJldmlldyk7CisgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChtX2FyZ3Vt
ZW50cy0+YXJndW1lbnRBdChpKSwgImNvbnNvbGUiLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNl
YXJjaFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRl
bnRTZWFyY2hVdGlsaXRpZXMuY3BwCmluZGV4IGJjZDY5MWJiMWUzNmJiZjYyZTI2MWMxOTljYjg4
NGE5M2NmNTM0NmUuLmVmNTRmMDZjMzFjYTYwMWFiNWNjMzRjZDYxMWRiZTY4Nzk5NDM5ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbGl0aWVzLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJZYXJyLmgiCkBAIC0x
MjEsOSArMTIxLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5n
cyhjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChzaXplX3QgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBsaW5lQ29udGVudCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2goc2l6
ZV90IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQpCiB7Ci0gICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g6OmNyZWF0
ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGxpbmVOdW1iZXIpCiAgICAg
ICAgIC5zZXRMaW5lQ29udGVudChsaW5lQ29udGVudCkKICAgICAgICAgLnJlbGVhc2UoKTsKQEAg
LTE1NCw5ICsxNTQsOSBAQCBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3Qg
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbgogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4
dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBi
b29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNS
ZWdleCkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHJlc3VsdCA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVy
aWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIEpTQzo6
WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpj
cmVhdGVTZWFyY2hSZWdleChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwgaXNSZWdleCk7CiAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxzaXplX3QsIFN0cmluZz4+IG1hdGNoZXMgPSBnZXRSZWd1bGFyRXhwcmVz
c2lvbk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKaW5kZXggMmJj
MmQzYzdjMGRkMmRlMmYxYzIyYTNjMmRiNmZhMTFhNmIzMjJmMC4uZDYxMmRhYjFmMmE4NzA5MDk1
NWNiOTE4ZGYyYmQ1MDllNTZmY2QzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKQEAgLTMxLDcgKzMxLDcg
QEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JKU1R5cGVC
dWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNl
IENvbnRlbnRTZWFyY2hVdGlsaXRpZXMgewogCiBKU19FWFBPUlRfUFJJVkFURSBKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KGNvbnN0IFN0cmluZyYgcXVlcnks
IGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4KTsKIEpTX0VYUE9SVF9QUklWQVRFIGlu
dCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJF
eHByZXNzaW9uJiwgY29uc3QgU3RyaW5nJik7Ci1KU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Okdl
bmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBpc1Jl
Z2V4KTsKIEpTX0VYUE9SVF9QUklWQVRFIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25Gcm9tT2Zm
c2V0KHNpemVfdCBvZmZzZXQsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBsaW5lRW5kaW5ncyk7CiBK
U19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRp
bmdzKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IGU1YTI2MjJkZGViMTQ1MmZlOTJiY2E0NmE4
MDQ1OWI5OWJhZDQwOGEuLjI1MTg3ZmI0YWJlOTQwZTA0MWU3MmI4ZWYyYTgxM2U4YjY3ZDlhOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHQuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk7CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0Ojp+SW5qZWN0
ZWRTY3JpcHQoKQogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlW
YWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVh
dGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29s
IHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRl
cmFsKCJldmFsdWF0ZSIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpAQCAtNjks
NyArNjksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbgogICAgIG1ha2VFdmFsQ2FsbChlcnJv
clN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAotdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYg
YXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3Zv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJl
dmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4q
IHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24p
CiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiY2FsbEZ1bmN0aW9uT24iKSwgaW5zcGVjdG9y
RW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplCiAgICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3
YXNUaHJvd24pOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1l
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJ
bmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJp
bmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFs
dWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJldmFsdWF0
ZU9uQ2FsbEZyYW1lIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRs
ZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CkBAIC05Myw3
ICs5Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBEZXByZWNhCiAgICAgbWFrZUV2YWxDYWxsKGVycm9y
U3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOwogfQogCi12b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz4qIHJlc3VsdCkKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRGdW5jdGlv
bkRldGFpbHMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKQEAgLTEwNiwxMCAr
MTA2LDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgICpyZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+OjpydW50aW1lQ2FzdChyZXN1bHRWYWx1ZSk7CisgICAg
KnJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1
bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KHJlc3VsdFZhbHVlKTsKIH0KIAotdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPEFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0
aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVm
UHRyPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+KiBwcm9wZXJ0aWVzKQogewogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoImdldFByb3BlcnRp
ZXMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xMjIsMTAgKzEyMiwxMCBA
QCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBvYmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
KnByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChyZXN1bHQpOworICAg
ICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QocmVzdWx0KTsKIH0KIAot
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPEFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHBy
b3BlcnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0
b3I+PiogcHJvcGVydGllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRJbnRlcm5h
bFByb3BlcnRpZXMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxl
cigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xMzcsMTIg
KzEzNywxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBhcnJheSA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNh
c3QocmVzdWx0KTsKKyAgICBhdXRvIGFycmF5ID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50
aW1lQ2FzdChyZXN1bHQpOwogICAgIGlmIChhcnJheS0+bGVuZ3RoKCkgPiAwKQogICAgICAgICAq
cHJvcGVydGllcyA9IGFycmF5OwogfQogCi1QYXNzUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxG
cmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCitQYXNzUmVm
UHRyPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBB
U0NJSUxpdGVyYWwoIndyYXBDYWxsRnJhbWVzIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0xNTMsMTIgKzE1MywxMiBAQCBQYXNzUmVmUHRyPEFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3Rl
ZFNjcmlwdDo6dwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsKICAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0luc3BlY3RvclZhbHVlKHNjcmlw
dFN0YXRlKCkpOwogICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlw
ZTo6QXJyYXkpCi0gICAgICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+Pjo6cnVudGltZUNhc3QocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkNhbGxGcmFtZT4+OjpydW50aW1lQ2FzdChyZXN1bHQpOwogCi0gICAgcmV0dXJu
IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVh
dGUoKTsKKyAgICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNh
bGxGcmFtZT46OmNyZWF0ZSgpOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFt
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3Qo
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1Zh
bHVlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24o
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJ3cmFwT2JqZWN0IiksIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0xNzMsMTAgKzE3
MywxMCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3VsdCA9IHIudG9JbnNwZWN0b3JW
YWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKLSAgICByZXR1cm4gQmluZGluZ1RyYWl0
czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1l
Q2FzdChyYXdSZXN1bHQpOworICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CiB9
CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4g
SW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
dGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdAogewog
ICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgi
d3JhcFRhYmxlIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CkBAIC0xOTMsNyArMTkzLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGEKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByYXdSZXN1bHQg
PSByLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUoKSktPmFzT2JqZWN0KCk7Ci0gICAgcmV0
dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Pjo6cnVudGltZUNhc3QocmF3UmVzdWx0KTsKKyAgICByZXR1cm4gQmluZGluZ1RyYWl0
czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2Fz
dChyYXdSZXN1bHQpOwogfQogCiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlw
dDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCA0YzU4
YjE5ZTUxZjdmNzEwOWJkZjJhZDc0MDBiMGY5ZjdiMjdhYjZlLi42ZThmNzY5ZTAxNjNhMzI2Y2Y2
MjIyYjQwZTEwMzZkMGU0MzY5YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0zNSw3ICszNSw3IEBACiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFzZS5oIgotI2luY2x1ZGUgIklu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNQcm90b2NvbFR5
cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTYsMTYgKzU2LDE2IEBAIHB1
YmxpYzoKICAgICBJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpTY3JpcHRPYmplY3QsIEluc3Bl
Y3RvckVudmlyb25tZW50Kik7CiAgICAgdmlydHVhbCB+SW5qZWN0ZWRTY3JpcHQoKTsKIAotICAg
IHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29s
IHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKTsKLSAgICB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7Ci0gICAgdm9pZCBldmFsdWF0
ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhw
cmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UHJv
cGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJv
cGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRJbnRlcm5hbFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+KiByZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVk
ZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3
LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgUHJvdG9j
b2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIGNhbGxGdW5jdGlvbk9u
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29s
IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
KiByZXN1bHQsIFByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9p
ZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBQcm90b2Nv
bDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRh
aWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0UHJv
cGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJv
cGVydGllcywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVy
dHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJbnRlcm5hbFByb3BlcnRpZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OkFy
cmF5PFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1
bHQpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYpOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4gd3JhcE9iamVjdChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0
cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25zdDsKLSAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBUYWJs
ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFByb3RvY29sOjpB
cnJheTxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVzKGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CisgICAgUGFzc1JlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3ID0gZmFs
c2UpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gd3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0OwogCiAgICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29u
c3Q7CiAgICAgdm9pZCBpbnNwZWN0T2JqZWN0KERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmNwcAppbmRleCBmZTEwZDZjNGJmYmFmYmYyODZjYzNhOGQzNWM5YzU4ZGQ1NDI0YzFiLi44
NTY5YTRiNzgxMjc2NjYyZmEwZDBjZWQ5MWRlZTFkMjg1N2EwZmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlAKICAgICAgICAgKnJlc3Vs
dCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2Fs
bC4iKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rp
b24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piogb2JqZWN0UmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVj
dGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRGVw
cmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFByb3RvY29sOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdDsK
ICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9p
ZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIERlcHJlY2F0ZWQ6OlNjcmkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICpvYmpl
Y3RSZXN1bHQgPSBCaW5kaW5nVHJhaXRzPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmopOworICAgICpvYmplY3RSZXN1bHQgPSBCaW5kaW5n
VHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1
bHRPYmopOwogICAgICp3YXNUaHJvd24gPSB3YXNUaHJvd25WYWw7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCmluZGV4
IDAzNGUwYzIwYTRmOGVjNGE3YjE0MjY5NjdjODg5MDM1MTFkNWRiN2IuLjUwZmE1OGRkMDc5ODdh
Y2QyMGFlZmVlN2Q3NzVhNDk1MWEwY2Y2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApAQCAtMzUsNyArMzUsNyBAQAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJJbnNwZWN0b3JFbnZpcm9ubWVudC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9ySlNQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAiYmluZGluZ3MvU2NyaXB0T2JqZWN0Lmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC02
OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRPYmpl
Y3QmIGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7CiAgICAgdm9pZCBtYWtlQ2FsbChE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+KiBy
ZXN1bHQpOwotICAgIHZvaWQgbWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7
CisgICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwmLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJl
c3VsdCwgUHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTkyY2U2ZDlm
YWNkODRlOWExOGRiZjY1ZjQwNjYwNzBkM2Q5MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKQEAgLTAs
MCArMSwyNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvclByb3RvY29sVHlwZXNfaAorI2RlZmluZSBJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCituYW1lc3Bh
Y2UgUHJvdG9jb2wgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgT3B0T3V0cHV0IHsK
K3B1YmxpYzoKKyAgICBPcHRPdXRwdXQoKSA6IG1fYXNzaWduZWQoZmFsc2UpIHsgfQorCisgICAg
dm9pZCBvcGVyYXRvcj0oVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsK
KyAgICAgICAgbV9hc3NpZ25lZCA9IHRydWU7CisgICAgfQorCisgICAgYm9vbCBpc0Fzc2lnbmVk
KCkgY29uc3QgeyByZXR1cm4gbV9hc3NpZ25lZDsgfQorCisgICAgVCBnZXRWYWx1ZSgpCisgICAg
eworICAgICAgICBBU1NFUlQoaXNBc3NpZ25lZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7
CisgICAgfQorCitwcml2YXRlOgorICAgIFQgbV92YWx1ZTsKKyAgICBib29sIG1fYXNzaWduZWQ7
CisKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcHRPdXRwdXQpOworfTsKKworLy8gVGhpcyBj
bGFzcyBwcm92aWRlcyAiVHJhaXRzIiB0eXBlIGZvciB0aGUgaW5wdXQgdHlwZSBULiBJdCBpcyBw
cm9ncmFtbWVkIHVzaW5nIEMrKyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgorLy8gdGVjaG5pcXVl
LiBCeSBkZWZhdWx0IGl0IHNpbXBseSB0YWtlcyAiSXRlbVRyYWl0cyIgdHlwZSBmcm9tIFQsIGJ1
dCBpdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgYmFzZSB0eXBlcy4KK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6Okl0
ZW1UcmFpdHMgVHJhaXRzOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEFycmF5
IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7Citwcml2YXRlOgorICAgIEFycmF5KCkgeyB9
CisKKyAgICBJbnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygpCisgICAgeworICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yQXJyYXkpID09IHNpemVvZihBcnJheTxUPiks
IGNhbm5vdF9jYXN0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3RvckFycmF5
Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykpOworICAgIH0KKworcHVi
bGljOgorICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFQ+IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQdHIodGhpcy0+b3BlbkFjY2Vz
c29ycygpLCB2YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRJdGVtKFQgdmFsdWUpCisgICAg
eworICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJhdyh0aGlzLT5vcGVu
QWNjZXNzb3JzKCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJh
eTxUPj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXk8
VD4oKSk7CisgICAgfQorfTsKKworc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgeworICAgIHN0YXRp
YyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUp
OworICAgIH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8U3RyaW5n
PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5z
cGVjdG9yQXJyYXkqIGFycmF5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgICAgICBhcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9OworfTsK
KwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKKyAgICBzdHJ1Y3Qg
VHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJy
YXksIGludCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hJbnQodmFs
dWUpOworICAgICAgICB9CisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0
ZW1IZWxwZXI8ZG91YmxlPiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2
b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBkb3VibGUgdmFsdWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoTnVtYmVyKHZhbHVlKTsKKyAgICAgICAgfQorICAg
IH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGJvb2w+IHsKKyAg
ICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JB
cnJheSogYXJyYXksIGJvb2wgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5w
dXNoQm9vbGVhbih2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9OworfTsKKwordGVtcGxhdGU8Pgor
c3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4geworICAgIHN0cnVjdCBUcmFp
dHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJh
eSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9CisgICAgfTsKK307CisKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0PiB7CisgICAg
c3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9y
QXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9
OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JBcnJh
eT4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRy
KEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFsdWUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoQXJyYXkodmFsdWUpOworICAgICAg
ICB9CisgICAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXJyYXlJdGVt
SGVscGVyPFByb3RvY29sOjpBcnJheTxUPj4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAg
ICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0
cjxQcm90b2NvbDo6QXJyYXk8VD4+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJh
eS0+cHVzaFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH07Cit9OworCisvLyBIZWxwZXIg
bWV0aG9kcyBmb3IgUHJvdG9jb2wgYW5kIG90aGVyIEluc3BlY3RvciB0eXBlcyBhcmUgcHJvdmlk
ZWQgYnkKKy8vIHNwZWNpYWxpemF0aW9ucyBvZiBCaW5kaW5nVHJhaXRzPFQ+LiBTb21lIGFyZSBn
ZW5lcmF0ZWQgZm9yIHByb3RvY29sIHR5cGVzLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3Ry
dWN0IEJpbmRpbmdUcmFpdHMgeworICAgIHR5cGVkZWYgVCBCaW5kaW5nVHlwZTsKKworICAgIHN0
YXRpYyBJbnNwZWN0b3JWYWx1ZTo6VHlwZSB0eXBlVGFnKCk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VD4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUo
SW5zcGVjdG9yVmFsdWUqKTsKKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9OworCit0ZW1w
bGF0ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZSBUWVBFPgorc3RydWN0IFByaW1pdGl2ZUJpbmRpbmdU
cmFpdHMgeworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1
ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBB
U1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKKyAgICB9CisjZW5kaWYgLy8gIUFTU0VSVF9E
SVNBQkxFRAorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBCaW5kaW5nVHJhaXRz
PFByb3RvY29sOjpBcnJheTxUPj4geworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBy
dW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXk7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9
IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywg
Y2FzdFJlcyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBhc3NlcnRWYWx1ZUhhc0V4
cGVjdGVkVHlwZShhcnJheS5nZXQoKSk7CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorICAg
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXk8VD4pID09IHNpemVvZihJbnNwZWN0b3JB
cnJheSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFy
cmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4oYXJyYXkuZ2V0KCkpKTsK
KyAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFs
dWUtPmFzQXJyYXkoJmFycmF5KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0
UmVzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsg
aSsrKQorICAgICAgICAgICAgQmluZGluZ1RyYWl0czxUPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUoYXJyYXktPmdldChpKS5nZXQoKSk7CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElT
QUJMRUQKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZh
bHVlPiB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVl
SGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZhbHVlKikKKyAgICB7CisgICAgfQorI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yQXJyYXk+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
VmFsdWU6OlR5cGU6OkFycmF5PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRz
PEluc3BlY3Rvck9iamVjdD4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0
b3JWYWx1ZTo6VHlwZTo6T2JqZWN0PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJh
aXRzPFN0cmluZz4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1
ZTo6VHlwZTo6U3RyaW5nPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGJv
b2w+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6
OkJvb2xlYW4+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8ZG91YmxlPiA6
IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpOdW1i
ZXI+IHsgfTsKKworLy8gRklYTUU6IEFkZCBhbiBJbnNwZWN0b3I6OlR5cGUgdGFnIGZvciBpbnQg
c28gd2UgY2FuIHJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZS4KK3RlbXBsYXRlPD4KK3N0cnVjdCBC
aW5kaW5nVHJhaXRzPGludD4geworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCisgICAg
eworICAgICAgICBkb3VibGUgdjsKKyAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzTnVt
YmVyKCZ2KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKKyAgICAg
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8aW50Pih2KSkgPT0gdik7
CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK307CisKK30gLy8gbmFtZXNwYWNl
IFByb3RvY29sCisKK3VzaW5nIFByb3RvY29sOjpCaW5kaW5nVHJhaXRzOworCit9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JQcm90b2NvbFR5cGVzX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOWY3ODIxMjAwM2ZmNTQwMWVjYjYzOWRkNWMzZTExYWUx
YWJiOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMjc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIFRoZSBD
aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEluc3BlY3RvclR5cGVCdWlsZGVyX2gK
LSNkZWZpbmUgSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7
Ci0KLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBPcHRPdXRwdXQgewotcHVibGljOgotICAgIE9wdE91dHB1dCgpIDogbV9hc3NpZ25lZChmYWxz
ZSkgeyB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yPShUIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV92
YWx1ZSA9IHZhbHVlOwotICAgICAgICBtX2Fzc2lnbmVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBi
b29sIGlzQXNzaWduZWQoKSBjb25zdCB7IHJldHVybiBtX2Fzc2lnbmVkOyB9Ci0KLSAgICBUIGdl
dFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0Fzc2lnbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gbV92YWx1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVCBtX3ZhbHVlOwotICAgIGJv
b2wgbV9hc3NpZ25lZDsKLQotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE9wdE91dHB1dCk7Ci19
OwotCi0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzICJUcmFpdHMiIHR5cGUgZm9yIHRoZSBpbnB1dCB0
eXBlIFQuIEl0IGlzIHByb2dyYW1tZWQgdXNpbmcgQysrIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9u
Ci0vLyB0ZWNobmlxdWUuIEJ5IGRlZmF1bHQgaXQgc2ltcGx5IHRha2VzICJJdGVtVHJhaXRzIiB0
eXBlIGZyb20gVCwgYnV0IGl0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBiYXNlIHR5cGVzLgotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXIgewotICAgIHR5cGVkZWYg
dHlwZW5hbWUgVDo6SXRlbVRyYWl0cyBUcmFpdHM7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlCYXNlIHsKLXByaXZhdGU6Ci0g
ICAgQXJyYXkoKSB7IH0KLQotICAgIEluc3BlY3RvckFycmF5KiBvcGVuQWNjZXNzb3JzKCkKLSAg
ICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3JBcnJheSkgPT0gc2l6
ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPih0aGlzKSk7
Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8VD4gdmFsdWUp
Ci0gICAgewotICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJlZlB0cih0
aGlzLT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEl0ZW0o
VCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFycmF5SXRlbUhlbHBlcjxUPjo6VHJhaXRzOjpwdXNo
UmF3KHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEFycmF5PFQ+PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBcnJheTxUPigpKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgU3RydWN0SXRlbVRyYWl0
cyB7Ci0gICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAgIHsKLSAgICAgICAgYXJyYXktPnB1
c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRl
bUhlbHBlcjxTdHJpbmc+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZv
aWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5nKHZhbHVlKTsKLSAgICAgICAg
fQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGludD4g
ewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3Bl
Y3RvckFycmF5KiBhcnJheSwgaW50IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJh
eS0+cHVzaEludCh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgot
c3RydWN0IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAg
ICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGRvdWJsZSB2
YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hOdW1iZXIodmFsdWUpOwot
ICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxw
ZXI8Ym9vbD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNo
UmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2YWx1ZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgYXJyYXktPnB1c2hCb29sZWFuKHZhbHVlKTsKLSAgICAgICAgfQotICAgIH07Ci19Owot
Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvclZhbHVlPiB7Ci0g
ICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVj
dG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAg
ICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JP
YmplY3Q+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJl
ZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZh
bHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKLSAg
ICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVy
PEluc3BlY3RvckFycmF5PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2
b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hBcnJheSh2
YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0
cnVjdCBBcnJheUl0ZW1IZWxwZXI8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB7Ci0gICAgc3RydWN0
IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkq
IGFycmF5LCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gdmFsdWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwotICAgICAgICB9Ci0gICAg
fTsKLX07Ci0KLS8vIEhlbHBlciBtZXRob2RzIGZvciBUeXBlQnVpbGRlciBhbmQgb3RoZXIgSW5z
cGVjdG9yIHR5cGVzIGFyZSBwcm92aWRlZCBieQotLy8gc3BlY2lhbGl6YXRpb25zIG9mIEJpbmRp
bmdUcmFpdHM8VD4uIFNvbWUgYXJlIGdlbmVyYXRlZCBmb3IgcHJvdG9jb2wgdHlwZXMuCi0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQmluZGluZ1RyYWl0cyB7Ci0gICAgdHlwZWRlZiBU
IEJpbmRpbmdUeXBlOwotCi0gICAgc3RhdGljIEluc3BlY3RvclZhbHVlOjpUeXBlIHR5cGVUYWco
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUPiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4pOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBzdGF0aWMgdm9pZCBhc3Nl
cnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1ZSopOwotI2VuZGlmIC8vICFBU1NF
UlRfRElTQUJMRUQKLX07Ci0KLXRlbXBsYXRlPEluc3BlY3RvclZhbHVlOjpUeXBlIFRZUEU+Ci1z
dHJ1Y3QgUHJpbWl0aXZlQmluZGluZ1RyYWl0cyB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAg
IHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZhbHVlKiB2
YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZS0+dHlwZSgpID09IFRZUEUpOwotICAg
IH0KLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgotc3RydWN0IEJpbmRpbmdUcmFpdHM8VHlwZUJ1aWxkZXI6OkFycmF5PFQ+PiB7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IHZhbHVlKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJh
eTsKLSAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKLSAgICAg
ICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
Ci0gICAgICAgIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFycmF5LmdldCgpKTsKLSNlbmRp
ZiAvLyAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihBcnJh
eTxUPikgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9jYXN0X3Byb2JsZW0pOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JB
cnJheUJhc2UqPihhcnJheS5nZXQoKSkpOwotICAgIH0KLQotI2lmICFBU1NFUlRfRElTQUJMRUQK
LSAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCi0gICAgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGFycmF5Owot
ICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgmYXJyYXkpOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBpKyspCi0gICAgICAgICAgICBCaW5kaW5nVHJhaXRz
PFQ+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS0+Z2V0KGkpLmdldCgpKTsKLSAg
ICB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU+IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0g
ICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUq
KQotICAgIHsKLSAgICB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfTsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3JBcnJheT4gOiBwdWJsaWMgUHJpbWl0
aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6QXJyYXk+IHsgfTsKLXRlbXBs
YXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yT2JqZWN0PiA6IHB1YmxpYyBQcmlt
aXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpPYmplY3Q+IHsgfTsKLXRl
bXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8U3RyaW5nPiA6IHB1YmxpYyBQcmltaXRpdmVC
aW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpTdHJpbmc+IHsgfTsKLXRlbXBsYXRl
PD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8Ym9vbD4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6Qm9vbGVhbj4geyB9OwotdGVtcGxhdGU8PiBzdHJ1
Y3QgQmluZGluZ1RyYWl0czxkb3VibGU+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yVmFsdWU6OlR5cGU6Ok51bWJlcj4geyB9OwotCi0vLyBGSVhNRTogQWRkIGFuIElu
c3BlY3Rvcjo6VHlwZSB0YWcgZm9yIGludCBzbyB3ZSBjYW4gcmVtb3ZlIHRoaXMgc3BlY2lhbCBj
YXNlLgotdGVtcGxhdGU8Pgotc3RydWN0IEJpbmRpbmdUcmFpdHM8aW50PiB7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKElu
c3BlY3RvclZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGRvdWJsZSB2OwotICAgICAgICBi
b29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNOdW1iZXIoJnYpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KGNhc3RSZXMsIGNhc3RSZXMpOwotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGF0aWNfY2FzdDxpbnQ+KHYpKSA9PSB2KTsKLSAgICB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNB
QkxFRAotfTsKLQotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKLQotdXNpbmcgVHlwZUJ1aWxk
ZXI6OkJpbmRpbmdUcmFpdHM7Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgotCi0jZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclR5cGVC
dWlsZGVyX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxGcmFtZS5jcHAKaW5kZXggYzdhODIyZWY5ZWY0Mzk5NTJhYjdmZjIwYjg0NDU5ZWI4MWZh
MTFkMy4uN2M5NTBlOGI5MDdhYjMxYWYzZmJmNjQxZGY4NDBlNThmMWZiZTY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcApA
QCAtNTgsOSArNTgsOSBAQCBib29sIFNjcmlwdENhbGxGcmFtZTo6aXNFcXVhbChjb25zdCBTY3Jp
cHRDYWxsRnJhbWUmIG8pIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+IFNjcmlwdENh
bGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+IFNjcmlwdENhbGxGcmFtZTo6YnVpbGRJ
bnNwZWN0b3JPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldEZ1bmN0
aW9uTmFtZShtX2Z1bmN0aW9uTmFtZSkKICAgICAgICAgLnNldFVybChtX3NjcmlwdE5hbWUpCiAg
ICAgICAgIC5zZXRMaW5lTnVtYmVyKG1fbGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCmluZGV4IDAwNTI0ZGM1MDFkMGVi
MzViOGRiM2U0MjFjZjZkNDZmOWRmYmZiYmMuLmU5YzEwZmY5ZTNiYjZhN2U4OTYyN2VjOTNmZWNl
ZWIwNmRkZWFiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsRnJhbWUuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNjcmlwdENhbGxGcmFtZSYpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNhbGxGcmFtZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT4gYnVpbGRJ
bnNwZWN0b3JPYmplY3QoKSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCmluZGV4IDli
M2NjYTFkZmE5Y2FhOGJlZjRiYWUzYzMxMzI0MTQxMjVhNGRmODguLjZmODFhNThlZGZjY2IzYTU1
YmFhZWM0M2EyMzU3ODI5YWVkNTdkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTEwNyw5ICsxMDcsOSBAQCBib29s
IFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqIG8pIGNvbnN0CiB9CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3Jp
cHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxs
RnJhbWU+PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdAogewot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBmcmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gZnJhbWVzID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3Jl
YXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkrKykK
ICAgICAgICAgZnJhbWVzLT5hZGRJdGVtKG1fZnJhbWVzLmF0KGkpLmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkpOwogICAgIHJldHVybiBmcmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAppbmRleCA5YzJhNTM0ZDhlODI4NTg4MjM0NTFk
MWIwNjhhYWM3YzQ4ZDE3MjI5Li42MWRhOWU0ODk5OTNhODNjZTExMjQzYWM3ZWYyMmIwYjYyNDQ1
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgiCiAjZW5kaWYKIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXF1
YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0
OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYmUwOTYxMTYxMTdh
NTc3MTYwZDk3NThkMzk3N2I4Zjc2MTc3MTg1ZS4uNmVmNjNmMDI3ZWIwOWMzZjg0OTVhZjRkYzRj
ZDAwNmJkMGNjNjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IEluc3BlY3RvckFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBm
YWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQ
YXNzUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRvSW5zcGVj
dCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQogewogICAgIGlmIChtX2VuYWJs
ZWQgJiYgbV9mcm9udGVuZERpc3BhdGNoZXIpIHsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmluc3BlY3Qob2JqZWN0VG9JbnNwZWN0LCBoaW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAppbmRleCAx
ZDMwZTJlMDE2OTU5YjQwOGE4M2E0ZWQ5NTk1NGE2YzVjNTJhOWEyLi43MDhkNmJlOGEwMDNiNTIw
MzQ5YmM1YzMwY2VmNDg2ZjM2ZGFmMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKQEAgLTYwLDE0ICs2MCwx
NCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50
cyk7CisgICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGlu
dHMpOwogICAgIHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChjb25zdCBTdHJpbmcmIHNj
cmlwdCk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvckluc3BlY3Rv
ckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPElu
c3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwog
ICAgIFZlY3RvcjxTdHJpbmc+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwotICAgIHN0
ZDo6cGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKKyAgICBzdGQ6OnBhaXI8
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDVlMWI2NDY0NjNkZjU1MWU4
MmQ0NTk1N2I1YWY3Yzk2MGZlYzI1ZWMuLjNhNTI4YWZhMmU0NTIwYjBlNDA0ZDg3NTZiNWRkMzBh
YTI4ODNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xNzUsMTkg
KzE3NSwxOSBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKIAogc3RhdGljIGJvb2wgYnJlYWtwb2ludEFj
dGlvblR5cGVGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBTY3JpcHRCcmVha3Bv
aW50QWN0aW9uVHlwZSogb3V0cHV0KQogewotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkxvZykpIHsKKyAgICBpZiAo
dHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRKU0VudW1Db25zdGFudFZhbHVl
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpM
b2cpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUxvZzsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgewor
ICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEpTRW51bUNvbnN0
YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246
OlR5cGU6OkV2YWx1YXRlKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFj
dGlvblR5cGVFdmFsdWF0ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0
eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEpTRW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU6OlNvdW5kKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0
QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEpTRW51bUNv
bnN0YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRB
Y3Rpb246OlR5cGU6OlByb2JlKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlByb2JlKSkgewogICAgICAgICAqb3V0cHV0
ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVQcm9iZTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMjM5LDkgKzIzOSw5IEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcqIGVycm9yU3RyCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxV
UkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qg
b3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+OjpjcmVhdGUoKTsKKyAgICBsb2NhdGlvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsK
ICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgICpl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJl
IHNwZWNpZmllZC4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IGxpCiAgICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRVUkwsIHVybCwg
aXNSZWdleCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVC
cmVha3BvaW50KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBpdC0+a2V5LCBicmVha3BvaW50KTsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9j
YXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChicmVha3BvaW50SWRlbnRpZmllciwgaXQtPmtleSwg
YnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIGxvY2F0aW9u
cy0+YWRkSXRlbShsb2NhdGlvbik7CiAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyBi
b29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmpl
Y3QqIGxvY2F0aW9uLCBKCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQogewogICAgIEpT
Qzo6U291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5zaWduZWQgbGluZU51bWJlcjsKQEAgLTM2OCw3
ICszNjgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlv
bihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgcmVzdW1lKGVycm9yU3RyaW5n
KTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0
cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIEpTQzo6U291cmNlSUQgc291cmNlSUQsIGNvbnN0
IFNjcmlwdEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2
ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllciwgSlNDOjpTb3Vy
Y2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKIHsKICAg
ICBTY3JpcHRzTWFwOjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9IG1fc2NyaXB0cy5maW5kKHNv
dXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9zY3JpcHRzLmVuZCgpKQpAQCAt
Mzg4LDE0ICszODgsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnIKICAgICAgICAgZGVidWdT
ZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBWZWN0b3I8SlND
OjpCcmVha3BvaW50SUQ+KCkpLml0ZXJhdG9yOwogICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElE
c0l0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SUQpOwogCi0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRp
b24gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgp
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9j
YXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXRTY3JpcHRJZChTdHJpbmc6Om51bWJlcihzb3VyY2VJRCkpCiAgICAgICAg
IC5zZXRMaW5lTnVtYmVyKGFjdHVhbExpbmVOdW1iZXIpOwogICAgIGxvY2F0aW9uLT5zZXRDb2x1
bW5OdW1iZXIoYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAgICByZXR1cm4gbG9jYXRpb247CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29uc3QgU3RyaW5nJiBxdWVyeSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25z
dCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3Vs
dHMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SURTdHIsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRz
KQogewogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVn
ZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRp
dmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC00MTgsNyArNDE4LDcgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKmVycm9yID0gIk5vIHNjcmlwdCBmb3Ig
aWQ6ICIgKyBzY3JpcHRJRFN0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpn
ZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVu
Y3Rpb25EZXRhaWxzPiYgZGV0YWlscykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0
RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz4mIGRldGFpbHMpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5j
dGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC01MTYs
NyArNTE2LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0
aW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnMKICAgICAgICAgKmVycm9yU3RyaW5n
ID0gQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvci4gQ291bGQgbm90IGNoYW5nZSBwYXVzZSBv
biBleGNlcHRpb25zIHN0YXRlIik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBj
b25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUs
IGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJl
dmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNv
bnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3Qg
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCBy
ZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2Ny
aXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNO
b1ZhbHVlKCkpIHsKQEAgLTU1MywxNSArNTUzLDE1IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZl
CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCiB7CiAgICAgaWYgKCFt
X3BhdXNlZFNjcmlwdFN0YXRlKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNy
ZWF0ZSgpOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogCiAgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5q
ZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRTY3JpcHRTdGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICB9CiAKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQu
d3JhcENhbGxGcmFtZXMobV9jdXJyZW50Q2FsbFN0YWNrKTsKQEAgLTYxMiw3ICs2MTIsNyBAQCB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQg
c291cmNlSUQsIGNvbnN0IFNjcmlwdAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGl0LT5rZXksIHNvdXJjZUlELCBicmVh
a3BvaW50KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+a2V5LCBzb3VyY2VJRCwg
YnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAgICAgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQoaXQtPmtleSwgbG9jYXRpb24pOwogICAg
IH0KQEAgLTY2MCw4ICs2NjAsOCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFr
cG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsCiAgICAgaW50IHNh
bXBsZUlkID0gbV9uZXh0UHJvYmVTYW1wbGVJZCsrOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Io
c2NyaXB0U3RhdGUpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiBwYXlsb2FkID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChzYW1wbGUsIG9iamVjdEdy
b3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24pKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpQcm9iZVNhbXBsZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpQ
cm9iZVNhbXBsZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gcGF5bG9hZCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qoc2FtcGxlLCBvYmpl
Y3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSk7CisgICAgUmVmUHRyPFByb3RvY29s
OjpEZWJ1Z2dlcjo6UHJvYmVTYW1wbGU+IHJlc3VsdCA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6UHJv
YmVTYW1wbGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRQcm9iZUlkKGFjdGlvbi5pZGVudGlmaWVy
KQogICAgICAgICAuc2V0U2FtcGxlSWQoc2FtcGxlSWQpCiAgICAgICAgIC5zZXRCYXRjaElkKGhp
dENvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDg0N2U3OGI2MGY1ZGNj
Zjk2OWZiM2QwMTEzZWQyNTIzZWEwMjdkM2UuLjdjZmQ1NzBlNTdjNTJhZGU4OGFmZjFiNzZiZDBm
NzFmODAxMDY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTcxLDIwICs3
MSwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nKiwgYm9v
bCBhY3RpdmUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwo
RXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwg
Y29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1u
TnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25z
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiYgYWN0dWFsTG9jYXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVh
a3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBv
cHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9w
dGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElk
KiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
PiYgYWN0dWFsTG9jYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCcmVh
a3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29u
dGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0
aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c2NyaXB0SUQsIFN0cmluZyogc2NyaXB0U291cmNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
bklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0
YWlscz4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBPdmVy
KEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBJbnRvKEVycm9y
U3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBPdXQoRXJyb3JTdHJpbmcq
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjYWxs
RnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdy
b3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1
ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGNhbGxG
cmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVl
LCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgaXNQYXVzZWQoKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBkaWRDbGVhckdsb2JhbE9iamVjdCgpOwogCiBwcml2YXRlOgotICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQ
YXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkgb3ZlcnJpZGUgZmluYWw7CkBAIC0xMzcsNyArMTM3LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVh
a3BvaW50QWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGJyZWFr
cG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb24mLCBpbnQgaGl0Q291bnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzYW1w
bGUpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IHJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYg
YnJlYWtwb2ludElkZW50aWZpZXIsIEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9p
bnQmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2Nh
dGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmll
ciwgSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOwogICAgIGJvb2wgYXNz
ZXJ0UGF1c2VkKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBjbGVhckRlYnVnZ2VyQnJlYWtwb2lu
dFN0YXRlKCk7CiAgICAgdm9pZCBjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCA4MmQ1OWEwNmU1ZDNjNjMwZjA0ZDIx
YzEzNWMwODhkNDllOGMwMDdkLi5hYTkzYzM0NDQwZjc4YTZkNzM1MmQ0OGU0MWRiMTU0OTFiOTI3
MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtODQsMTAgKzg0LDEw
IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmlsZShQYXNzUmVmUHRyPEpT
Qzo6UHJvZmlsZT4gcHJwUHJvZmlsZSkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFk
ZFByb2ZpbGVIZWFkZXIoY3JlYXRlUHJvZmlsZUhlYWRlcigqcHJvZmlsZSkpOwogfQogCi1QYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBKU0M6OlByb2ZpbGUmIHByb2Zp
bGUpCitQYXNzUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBKU0M6OlByb2ZpbGUm
IHByb2ZpbGUpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhl
YWRlcjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGVJZChUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6Q1BVKQorICAgIHJldHVybiBQcm90b2NvbDo6UHJvZmls
ZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRUeXBlSWQoUHJvdG9jb2w6
OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkNQVSkKICAgICAgICAgLnNldFVpZChw
cm9maWxlLnVpZCgpKQogICAgICAgICAuc2V0VGl0bGUocHJvZmlsZS50aXRsZSgpKQogICAgICAg
ICAucmVsZWFzZSgpOwpAQCAtMTMxLDMwICsxMzEsMzAgQEAgU3RyaW5nIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmdldFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpCiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLCAnLicsIFN0cmluZzo6bnVtYmVyKG1fbmV4
dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKyspKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mIGhlYWRl
cnMpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OlByb2Zp
bGVIZWFkZXI+PiYgaGVhZGVycykKIHsKICAgICBtX3Byb2ZpbGVIZWFkZXJzUmVxdWVzdGVkID0g
dHJ1ZTsKLSAgICBoZWFkZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6UHJvZmlsZUhlYWRlcj46OmNyZWF0ZSgpOworICAgIGhlYWRlcnMgPSBQcm90b2NvbDo6
QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CiAKICAg
ICBmb3IgKGF1dG8mIHByb2ZpbGUgOiBtX3Byb2ZpbGVzLnZhbHVlcygpKQogICAgICAgICBoZWFk
ZXJzLT5hZGRJdGVtKGNyZWF0ZVByb2ZpbGVIZWFkZXIoKnByb2ZpbGUuZ2V0KCkpKTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZUNh
bGw+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZU5vZGU6OkNhbGwmIGNh
bGwpCitzdGF0aWMgUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2Rl
Q2FsbD4gYnVpbGRJbnNwZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQcm9maWxlTm9kZTo6Q2FsbCYg
Y2FsbCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9k
ZUNhbGw+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGVDYWxs
OjpjcmVhdGUoKQorICAgIFJlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2Rl
Q2FsbD4gcmVzdWx0ID0gUHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZUNhbGw6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydFRpbWUoY2FsbC5zdGFydFRpbWUoKSkKICAgICAgICAg
LnNldFRvdGFsVGltZShjYWxsLnRvdGFsVGltZSgpKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQ
cm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQcm9maWxlTm9kZSog
bm9kZSkKK3N0YXRpYyBQYXNzUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5v
ZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCiB7
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQ
VVByb2ZpbGVOb2RlQ2FsbD4+IGNhbGxzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGVDYWxsPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFBy
b3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlQ2FsbD4+IGNh
bGxzID0gUHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGVD
YWxsPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBKU0M6OlByb2ZpbGVOb2RlOjpDYWxsJiBj
YWxsIDogbm9kZS0+Y2FsbHMoKSkKICAgICAgICAgY2FsbHMtPmFkZEl0ZW0oYnVpbGRJbnNwZWN0
b3JPYmplY3QoY2FsbCkpOwogCi0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BV
UHJvZmlsZU5vZGU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5v
ZGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5v
ZGU+IHJlc3VsdCA9IFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU6OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXRJZChub2RlLT5pZCgpKQogICAgICAgICAuc2V0Q2FsbHMoY2FsbHMucmVs
ZWFzZSgpKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvCiAg
ICAgfQogCiAgICAgaWYgKCFub2RlLT5jaGlsZHJlbigpLmlzRW1wdHkoKSkgewotICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmls
ZU5vZGU+PiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxQcm90b2NvbDo6
QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IGNoaWxkcmVuID0gUHJv
dG9jb2w6OkFycmF5PFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVhdGUo
KTsKICAgICAgICAgZm9yIChSZWZQdHI8SlNDOjpQcm9maWxlTm9kZT4gcHJvZmlsZU5vZGUgOiBu
b2RlLT5jaGlsZHJlbigpKQogICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRJbnNw
ZWN0b3JPYmplY3QocHJvZmlsZU5vZGUuZ2V0KCkpKTsKICAgICAgICAgcmVzdWx0LT5zZXRDaGls
ZHJlbihjaGlsZHJlbik7CkBAIC0xNzcsMTMgKzE3NywxMyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVj
dChjbwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YnVp
bGRQcm9maWxlSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZSogcHJvZmlsZSkKK1Bh
c3NSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpidWlsZFByb2ZpbGVJbnNwZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQcm9maWxlKiBw
cm9maWxlKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IHJvb3ROb2RlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPj4g
cm9vdE5vZGVzID0gUHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmls
ZU5vZGU+OjpjcmVhdGUoKTsKICAgICBmb3IgKFJlZlB0cjxKU0M6OlByb2ZpbGVOb2RlPiBwcm9m
aWxlTm9kZSA6IHByb2ZpbGUtPmhlYWQoKS0+Y2hpbGRyZW4oKSkKICAgICAgICAgcm9vdE5vZGVz
LT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0KHByb2ZpbGVOb2RlLmdldCgpKSk7CiAKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiByZXN1bHQgPSBUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPFByb3Rv
Y29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gcmVzdWx0ID0gUHJvdG9jb2w6OlByb2ZpbGVyOjpD
UFVQcm9maWxlOjpjcmVhdGUoKQogICAgICAgICAuc2V0Um9vdE5vZGVzKHJvb3ROb2Rlcyk7CiAK
ICAgICBpZiAocHJvZmlsZS0+aWRsZVRpbWUoKSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6YnVpbGRQcm9maQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi12b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgcmF3VWlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9m
aWxlPiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q1BV
UHJvZmlsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCByYXdVaWQsIFJlZlB0cjxQcm90
b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+JiBwcm9maWxlT2JqZWN0KQogewogICAgIHVuc2ln
bmVkIHVpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYXdVaWQpOwogICAgIGF1dG8gaXQgPSBt
X3Byb2ZpbGVzLmZpbmQodWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCA1
ZTAwZmMxNWI2OTczODJlNmU4OTU2ZTJkOTExNjkyMDlmMzhlNWE2Li42MWEzNjE0NmQ5ZmZkOWY0
NWRkMGQwZTRmYTlhODdmNDA3NmZmNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5o
CkBAIC02OCwxMSArNjgsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyUHJv
ZmlsZXMoRXJyb3JTdHJpbmcqKSBvdmVycmlkZSBmaW5hbCB7IHJlc2V0KCk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mKSBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyos
IGludCB1aWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+Jikgb3Zl
cnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI+PiYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBnZXRDUFVQcm9maWxl
KEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJv
ZmlsZT4mKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUHJvZmlsZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCkgb3ZlcnJpZGUgZmluYWw7
CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2Zp
bGU+IGJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGUqKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+IGJ1aWxk
UHJvZmlsZUluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGUqKTsKIAogICAgIGVudW0g
U2hvdWxkUmVjb21waWxlIHsgU2tpcFJlY29tcGlsZSwgUmVjb21waWxlIH07CiAKQEAgLTEwMCw3
ICsxMDAsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIGdldFVzZXJJbml0aWF0ZWRQcm9maWxl
TmFtZSgpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVI
ZWFkZXI+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlNDOjpQcm9maWxlJik7CisgICAgUGFz
c1JlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVByb2ZpbGVI
ZWFkZXIoY29uc3QgSlNDOjpQcm9maWxlJik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAg
IFJlZlB0cjxJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMjAwNzUwYjkxZTMy
NDMwMzBjMDg1YTk3NWIwNWY4NWMxYmM1OGJmZi4uZWMxN2EzMTQ0Y2U5NDZlYjczNzQzYTFlNzJi
MDYwNzU4MmJmNjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC04MCwx
NSArODAsMTUgQEAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXAKICAgICByZXR1cm4gcHJlc2VudFN0
YXRlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpFcnJvclJhbmdlPiBidWlsZEVycm9yUmFuZ2VPYmplY3QoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiB0b2tlbkxvY2F0aW9uKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXJ0T2Zm
c2V0KHRva2VuTG9jYXRpb24uc3RhcnRPZmZzZXQpCiAgICAgICAgIC5zZXRFbmRPZmZzZXQodG9r
ZW5Mb2NhdGlvbi5lbmRPZmZzZXQpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Ci12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRh
eEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkVy
cm9yUmFuZ2U+JiByYW5nZSkKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6RXJyb3JSYW5nZT4mIHJhbmdlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbFZNKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtOTgsMTYgKzk4LDE2IEBAIHZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgSW5zcGVjCiAKICAgICBzd2l0Y2ggKGVycm9yLm1fc3ludGF4RXJyb3JUeXBlKSB7CiAg
ICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOgotICAgICAgICAqcmVzdWx0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOwor
ICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJy
b3JUeXBlOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50
YXhFcnJvcklycmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OklycmVjb3ZlcmFibGU7CisgICAgICAg
ICpyZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6
OklycmVjb3ZlcmFibGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2VyRXJyb3I6OlN5
bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbDoKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6VW50ZXJtaW5hdGVkTGl0
ZXJhbDsKKyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZTo6VW50ZXJtaW5hdGVkTGl0ZXJhbDsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JSZWNvdmVyYWJsZToKLSAgICAgICAgKnJlc3Vs
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6UmVj
b3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpTeW50YXhFcnJvclR5cGU6OlJlY292ZXJhYmxlOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlYwogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVj
dEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJv
b2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50
KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNv
bnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3Qg
Ym9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZhbChl
cnJvclN0cmluZywgZXhlY3V0aW9uQ29udGV4dElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhw
CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24o
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNvbnN0IG9w
dGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJv
b2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1
bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4q
IGNvbnN0IG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUs
IGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJ
ZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAt
MTYzLDcgKzE2Myw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25P
bihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgfQogfQogCi12b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGNvbnN0IG93blByb3Bl
cnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKQor
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Q
cm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Oklu
dGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKIHsKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5p
bmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0xOTcsMTEgKzE5NywxMSBAQCB2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6cnVuKEVycm9yU3RyaW5nKikKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYg
bG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlv
bnMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFi
bGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+
PiYgdHlwZURlc2NyaXB0aW9ucykKIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CiAgICAgVk0mIHZtID0gZ2xvYmFsVk0oKTsKLSAgICB0eXBlRGVzY3JpcHRpb25zID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6VHlwZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CisgICAgdHlwZURlc2NyaXB0aW9ucyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICghdm0uaXNQcm9maWxpbmdUeXBl
c1dpdGhIaWdoRmlkZWxpdHkoKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIlRoZSBWTSBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBUeXBlIEluZm9ybWF0aW9uLiIpOwog
ICAgICAgICByZXR1cm47CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmluZyog
ZXIKICAgICAgICAgbG9jYXRpb24tPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNvdXJjZUlEIiks
ICZzb3VyY2VJREFzU3RyaW5nKTsKICAgICAgICAgbG9jYXRpb24tPmdldE51bWJlcihBU0NJSUxp
dGVyYWwoImRpdm90IiksICZkaXZvdCk7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4gdHlwZURlc2NyaXB0aW9uID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlw
dGlvbj4gdHlwZURlc2NyaXB0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlw
ZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgYm9vbCBva2F5OwogICAgICAgICB2bS5o
aWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIoKS0+Z2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9y
SW5zcGVjdG9yKHN0YXRpY19jYXN0PFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3I+KGRlc2Ny
aXB0b3IpLCBkaXZvdCwgc291cmNlSURBc1N0cmluZy50b0ludFB0clN0cmljdCgmb2theSksIHR5
cGVEZXNjcmlwdGlvbik7CiAgICAgICAgIHR5cGVEZXNjcmlwdGlvbnMtPmFkZEl0ZW0odHlwZURl
c2NyaXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggNGFhZmNhNjJmMjk0
ZjczOGYzYTNiMDFlZjRiNmYxMjI2M2JkYzRiMi4uNzE0M2Y0YThkZGEyZjNmYTU1YTQ3MmVhZTBk
MWE1ZGQzMjQ2MTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTYxLDE0ICs2
MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikg
b3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcqKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUqIHJlc3VsdCwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYpIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiBy
ZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wq
IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJu
QnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCB2b2lkIHBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUqIHJlc3Vs
dCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFcnJvclJhbmdlPiYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiBy
ZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1
ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcqLCBjb25zdCBFcnJvclN0cmluZyYgb2JqZWN0
SWQpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGll
cywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGllcywgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVz
Y3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1
YWwgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3Ry
aW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlh
Ymxlc0F0T2Zmc2V0cyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRP
ZmZzZXRzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBlbmFibGVIaWdoRmlkZWxpdHlUeXBlUHJvZmlsaW5nKEVycm9yU3RyaW5n
Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVIaWdoRmlkZWxpdHlUeXBlUHJv
ZmlsaW5nKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2luaXRfXy5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5
CmluZGV4IDBiNzYxMThjZTVlZTI5Zjg0Y2Q1NTBlOTg0MjE4MGE0ZWIzNDk3M2EuLmJiNWY5N2Uy
YjMxMGEwNTI1YjBhOGVhMzllYjM2ODg4Mjk4MjFlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5
CkBAIC04LDUgKzgsNSBAQCBmcm9tIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIg
aW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
IGltcG9ydCAqCiBmcm9tIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyIGltcG9y
dCAqCiBmcm9tIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24gaW1w
b3J0ICoKLWZyb20gZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlciBpbXBvcnQgKgotZnJvbSBn
ZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zyb20gZ2VuZXJh
dGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX3Byb3RvY29s
X3R5cGVzX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3Bh
dGNoZXJfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQppbmRleCAyNmY0
YjM5ZDAzYWU1YmMzYTQzYzY0MzE0ZWI4MDJiNDIyN2Y5OTg3Li5jMGZlZjY2NWNiNmU0MjEwYWVk
N2U2YTI1NmYyNGJmNDZhN2JhMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVh
ZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKQEAgLTQ5LDcgKzQ5LDcg
QEAgY2xhc3MgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKIAog
ICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAgICAgICAgIGhlYWRlcnMgPSBbCi0gICAg
ICAgICAgICAnIkluc3BlY3RvciVzVHlwZUJ1aWxkZXJzLmgiJyAlIHNlbGYubW9kZWwoKS5mcmFt
ZXdvcmsuc2V0dGluZygncHJlZml4JyksCisgICAgICAgICAgICAnIkluc3BlY3RvciVzUHJvdG9j
b2xUeXBlcy5oIicgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpLAog
ICAgICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4nLAog
ICAgICAgICAgICAgJzx3dGYvUGFzc1JlZlB0ci5oPicsCiAgICAgICAgICAgICAnPHd0Zi90ZXh0
L1dURlN0cmluZy5oPiddCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggODdh
MmI4ZmUyZGFiMTlkN2MxYTE0NDU0YjRjNmEyMTQzOWRmMzI4Mi4uNjhmMjE0MDMxZjk0ZTIwYzli
NDFmYWY5Y2M4MDY1MDZlNmQ2MGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGNsYXNzIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRl
cl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBpZiAoJShwYXJhbWV0ZXJOYW1lKXMpJyAlIHBhcmFt
X2FyZ3MpCiAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBw
ZW5kKCcgICAgICAgIGpzb25NZXNzYWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFs
KCIlKHBhcmFtZXRlck5hbWUpcyIpLCAlKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3Mp
CiAgICAgICAgICAgICBlbGlmIHBhcmFtZXRlci50eXBlLmlzX2VudW0oKToKLSAgICAgICAgICAg
ICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT4l
KGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXQlKGZyYW1ld29ya1ByZWZpeClzRW51bUNvbnN0YW50VmFs
dWUoJShwYXJhbWV0ZXJOYW1lKXMpKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICBv
dXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT4lKGtleWVk
U2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpnZXQlKGZyYW1ld29ya1ByZWZpeClzRW51bUNvbnN0YW50VmFsdWUoJShwYXJh
bWV0ZXJOYW1lKXMpKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBqc29uTWVzc2Fn
ZS0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwg
JShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogCkBAIC0yMTUsNyArMjE1LDcgQEAg
Y2xhc3MgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3Ip
OgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBl
bmQoJyAgICAgICAgaWYgKG91dF8lKHBhcmFtZXRlck5hbWUpcyknICUgcGFyYW1fYXJncykKICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcg
ICAgICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFy
YW1ldGVyTmFtZSlzIiksIG91dF8lKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAg
ICAgICAgICAgICAgICAgZWxpZiBwYXJhbWV0ZXIudHlwZS5pc19lbnVtKCk6Ci0gICAgICAgICAg
ICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIHJlc3Vs
dC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0JShmcmFtZXdvcmtQcmVmaXgpc0VudW1Db25zdGFu
dFZhbHVlKG91dF8lKHBhcmFtZXRlck5hbWUpcykpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAg
ICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICByZXN1
bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiks
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldCUoZnJhbWV3b3JrUHJlZml4KXNFbnVtQ29uc3RhbnRW
YWx1ZShvdXRfJShwYXJhbWV0ZXJOYW1lKXMpKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRz
LmFwcGVuZCgnICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwo
IiUocGFyYW1ldGVyTmFtZSlzIiksIG91dF8lKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2Fy
Z3MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfZnJvbnRl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggM2M2NjllNjIzMGY2OTE1Nzc2ZDMxY2Q0MjUw
YWIxOTkwOWQ2ZGFlOC4uYTU2ODIwYTdjMTc5OWJkODZhNWFmZWNkY2U5MmI5NjJmM2NlMGZmNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfZnJvbnRlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHkKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgRnJvbnRlbmREaXNw
YXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0
cHV0KHNlbGYpOgogICAgICAgICBoZWFkZXJzID0gWwotICAgICAgICAgICAgJyJJbnNwZWN0b3Il
c1R5cGVCdWlsZGVycy5oIicgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZp
eCcpLAorICAgICAgICAgICAgJyJJbnNwZWN0b3Ilc1Byb3RvY29sVHlwZXMuaCInICUgc2VsZi5t
b2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKICAgICAgICAgICAgICc8aW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPicsCiAgICAgICAgICAgICAnPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4nLAogICAgICAgICAgICAgJzx3dGYvUGFzc1JlZlB0ci5oPics
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfZnJv
bnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA2NGU1YTY4M2ZiMjFjYTkw
YWYzMzQ1NDJkZGQ2YmIwNzZmY2Y2NTc0Li5mNWEzNTJlYjU1NTVjNWNjNzljYjhmY2U3NGIyYjlj
YTkxYmFiMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTgzLDcg
KzgzLDcgQEAgY2xhc3MgRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3Io
R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfdmFsdWUgPSAnKicgKyBwYXJh
bWV0ZXJfdmFsdWUKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci50eXBlLmlzX2VudW0oKToKICAg
ICAgICAgICAgICAgICBmcmFtZXdvcmtfcHJlZml4ID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5z
ZXR0aW5nKCdwcmVmaXgnKQotICAgICAgICAgICAgICAgIHBhcmFtZXRlcl92YWx1ZSA9ICdJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXQlc0VudW1Db25zdGFudFZhbHVlKCVzKScgJSAoZnJhbWV3
b3JrX3ByZWZpeCwgcGFyYW1ldGVyX3ZhbHVlKQorICAgICAgICAgICAgICAgIHBhcmFtZXRlcl92
YWx1ZSA9ICdJbnNwZWN0b3I6OlByb3RvY29sOjpnZXQlc0VudW1Db25zdGFudFZhbHVlKCVzKScg
JSAoZnJhbWV3b3JrX3ByZWZpeCwgcGFyYW1ldGVyX3ZhbHVlKQogCiAgICAgICAgICAgICBwYXJh
bWV0ZXJfYXJncyA9IHsKICAgICAgICAgICAgICAgICAncGFyYW1ldGVyVHlwZSc6IEdlbmVyYXRv
ci50eXBlX3N0cmluZ19mb3Jfc3RhY2tfb3V0X3BhcmFtZXRlcihwYXJhbWV0ZXIpLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlhNjAzOWM0ZGZiNmYxZWVjM2UzMWEwNzA3ZTg4YWNiMDIxNjJiMzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKQEAgLTAsMCArMSwzNDYg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0
eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBv
cnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBnZW5lcmF0b3Ig
aW1wb3J0IEdlbmVyYXRvciwgdWNmaXJzdAorZnJvbSBnZW5lcmF0b3JfdGVtcGxhdGVzIGltcG9y
dCBHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCitmcm9tIG1vZGVscyBpbXBvcnQgRW51
bVR5cGUsIE9iamVjdFR5cGUsIFByaW1pdGl2ZVR5cGUsIEFsaWFzZWRUeXBlLCBBcnJheVR5cGUs
IEZyYW1ld29ya3MKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xh
c3MgUHJvdG9jb2xUeXBlc0hlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpOgorICAgICAgICBHZW5lcmF0b3IuX19p
bml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKQorCisgICAgZGVmIG91dHB1dF9maWxl
bmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICJJbnNwZWN0b3Ilc1Byb3RvY29sVHlwZXMuaCIg
JSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpCisKKyAgICBkZWYgZ2Vu
ZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dl
bmVyYXRlKCkKKyAgICAgICAgc2VsZi5jYWxjdWxhdGVfdHlwZXNfcmVxdWlyaW5nX3NoYXBlX2Fz
c2VydGlvbnMoZG9tYWlucykKKworICAgICAgICBoZWFkZXJzID0gc2V0KFsKKyAgICAgICAgICAg
ICc8aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4nLAorICAgICAgICAgICAgJzx3
dGYvQXNzZXJ0aW9ucy5oPicsCisgICAgICAgICAgICAnPHd0Zi9QYXNzUmVmUHRyLmg+JworICAg
ICAgICBdKQorCisgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgbm90IEZyYW1l
d29ya3MuSmF2YVNjcmlwdENvcmU6CisgICAgICAgICAgICBoZWFkZXJzLmFkZCgnPGluc3BlY3Rv
ci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4nKQorCisgICAgICAgIGV4cG9ydF9tYWNybyA9
IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnZXhwb3J0X21hY3JvJywgTm9uZSkKKyAg
ICAgICAgZnJhbWV3b3JrX3ByZWZpeCA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygn
cHJlZml4JykKKworICAgICAgICBoZWFkZXJfYXJncyA9IHsKKyAgICAgICAgICAgICdoZWFkZXJH
dWFyZFN0cmluZyc6IHJlLnN1YignXFcrJywgJ18nLCBzZWxmLm91dHB1dF9maWxlbmFtZSgpKSwK
KyAgICAgICAgICAgICdpbmNsdWRlcyc6ICdcbicuam9pbihbJyNpbmNsdWRlICcgKyBoZWFkZXIg
Zm9yIGhlYWRlciBpbiBzb3J0ZWQoaGVhZGVycyldKSwKKyAgICAgICAgICAgICd0eXBlZGVmcyc6
ICcnLAorICAgICAgICAgICAgJ2lucHV0RmlsZW5hbWUnOiBzZWxmLl9pbnB1dF9maWxlcGF0aAor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuX3R5cGUgPSAnU3RyaW5nJworICAgICAgICByZXR1
cm5fdHlwZV93aXRoX2V4cG9ydF9tYWNybyA9IFtyZXR1cm5fdHlwZV0KKyAgICAgICAgaWYgZXhw
b3J0X21hY3JvIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuX3R5cGVfd2l0aF9leHBv
cnRfbWFjcm9bOjBdID0gW2V4cG9ydF9tYWNyb10KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBIZWFkZXJQcmVsdWRlKS5zdWJz
dGl0dXRlKE5vbmUsICoqaGVhZGVyX2FyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ25h
bWVzcGFjZSBQcm90b2NvbCB7JykKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVy
YXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKGRvbWFpbnMpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5fZ2VuZXJhdGVfdHlwZWRlZnMoZG9tYWlucykpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZCgnJXMgZ2V0JXNFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSk7JyAlICgnICcuam9pbihy
ZXR1cm5fdHlwZV93aXRoX2V4cG9ydF9tYWNybyksIGZyYW1ld29ya19wcmVmaXgpKQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoJ1xuJy5qb2luKFsKKyAgICAgICAgICAgICd0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAlcyBnZXQlc0VudW1Db25zdGFudFZhbHVlKFQgZW51bVZhbHVlKScgJSAocmV0dXJu
X3R5cGUsIGZyYW1ld29ya19wcmVmaXgpLAorICAgICAgICAgICAgJ3snLAorICAgICAgICAgICAg
JyAgICByZXR1cm4gZ2V0JXNFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGVudW1W
YWx1ZSkpOycgJSBmcmFtZXdvcmtfcHJlZml4LAorICAgICAgICAgICAgJ30nXSkpCisKKyAgICAg
ICAgYnVpbGRlcl9zZWN0aW9ucyA9IG1hcChzZWxmLl9nZW5lcmF0ZV9idWlsZGVyc19mb3JfZG9t
YWluLCBkb21haW5zKQorICAgICAgICBzZWN0aW9ucy5leHRlbmQoZmlsdGVyKGxhbWJkYSBzZWN0
aW9uOiBsZW4oc2VjdGlvbikgPiAwLCBidWlsZGVyX3NlY3Rpb25zKSkKKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9iaW5kaW5n
X3RyYWl0cygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ30gLy8gbmFtZXNwYWNlIFByb3Rv
Y29sJykKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBIZWFk
ZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKKyAgICAgICAgcmV0
dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgIyBQcml2YXRlIG1ldGhvZHMuCisKKyAg
ICAjIEZJWE1FOiBtb3ZlIGJ1aWxkZXJzIG91dCBvZiBjbGFzc2VzLCB1bmNvbW1lbnQgZm9yd2Fy
ZCBkZWNsYXJhdGlvbgorCisgICAgZGVmIF9nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyhz
ZWxmLCBkb21haW5zKToKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorCisgICAgICAgIGZvciBkb21h
aW4gaW4gZG9tYWluczoKKyAgICAgICAgICAgIGRlY2xhcmF0aW9uX3R5cGVzID0gW2RlY2wudHlw
ZSBmb3IgZGVjbCBpbiBkb21haW4udHlwZV9kZWNsYXJhdGlvbnNdCisgICAgICAgICAgICBvYmpl
Y3RfdHlwZXMgPSBmaWx0ZXIobGFtYmRhIF90eXBlOiBpc2luc3RhbmNlKF90eXBlLCBPYmplY3RU
eXBlKSwgZGVjbGFyYXRpb25fdHlwZXMpCisgICAgICAgICAgICBlbnVtX3R5cGVzID0gZmlsdGVy
KGxhbWJkYSBfdHlwZTogaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpLCBkZWNsYXJhdGlvbl90
eXBlcykKKyAgICAgICAgICAgIGlmIGxlbihvYmplY3RfdHlwZXMpICsgbGVuKGVudW1fdHlwZXMp
ID09IDA6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZG9tYWluX2xp
bmVzID0gW10KKyAgICAgICAgICAgIGRvbWFpbl9saW5lcy5hcHBlbmQoJ25hbWVzcGFjZSAlcyB7
JyAlIGRvbWFpbi5kb21haW5fbmFtZSkKKworICAgICAgICAgICAgb2JqZWN0X3R5cGVfbmFtZXMg
PSBbX3R5cGUucmF3X25hbWUoKSBmb3IgX3R5cGUgaW4gb2JqZWN0X3R5cGVzXQorICAgICAgICAg
ICAgZW51bV90eXBlX25hbWVzID0gW190eXBlLnJhd19uYW1lKCkgZm9yIF90eXBlIGluIGVudW1f
dHlwZXNdCisKKyAgICAgICAgICAgICMgRm9yd2FyZC1kZWNsYXJlIGFsbCBjbGFzc2VzIHNvIHRo
ZSB0eXBlIGJ1aWxkZXJzIHdvbid0IGJyZWFrIGlmIHJlYXJyYW5nZWQuCisgICAgICAgICAgICBk
b21haW5fbGluZXMuZXh0ZW5kKCdjbGFzcyAlczsnICUgbmFtZSBmb3IgbmFtZSBpbiBzb3J0ZWQo
b2JqZWN0X3R5cGVfbmFtZXMpKQorICAgICAgICAgICAgZG9tYWluX2xpbmVzLmV4dGVuZCgnZW51
bSBjbGFzcyAlczsnICUgbmFtZSBmb3IgbmFtZSBpbiBzb3J0ZWQoZW51bV90eXBlX25hbWVzKSkK
KyAgICAgICAgICAgIGRvbWFpbl9saW5lcy5hcHBlbmQoJ30gLy8gJXMnICUgZG9tYWluLmRvbWFp
bl9uYW1lKQorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKEdlbmVyYXRvci53cmFwX3dpdGhf
Z3VhcmRfZm9yX2RvbWFpbihkb21haW4sICdcbicuam9pbihkb21haW5fbGluZXMpKSkKKworICAg
ICAgICBpZiBsZW4oc2VjdGlvbnMpID09IDA6CisgICAgICAgICAgICByZXR1cm4gJycKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiIiIvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4K
KyVzCisvLyBFbmQgb2YgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisiIiIgJSAnXG5cbicuam9pbihz
ZWN0aW9ucykKKworICAgIGRlZiBfZ2VuZXJhdGVfdHlwZWRlZnMoc2VsZiwgZG9tYWlucyk6Cisg
ICAgICAgIHNlY3Rpb25zID0gbWFwKHNlbGYuX2dlbmVyYXRlX3R5cGVkZWZzX2Zvcl9kb21haW4s
IGRvbWFpbnMpCisgICAgICAgIHNlY3Rpb25zID0gZmlsdGVyKGxhbWJkYSB0ZXh0OiBsZW4odGV4
dCkgPiAwLCBzZWN0aW9ucykKKworICAgICAgICBpZiBsZW4oc2VjdGlvbnMpID09IDA6CisgICAg
ICAgICAgICByZXR1cm4gJycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiIiIv
LyBUeXBlZGVmcy4KKyVzCisvLyBFbmQgb2YgdHlwZWRlZnMuIiIiICUgJ1xuXG4nLmpvaW4oc2Vj
dGlvbnMpCisKKyAgICBkZWYgX2dlbmVyYXRlX3R5cGVkZWZzX2Zvcl9kb21haW4oc2VsZiwgZG9t
YWluKToKKyAgICAgICAgcHJpbWl0aXZlX2RlY2xhcmF0aW9ucyA9IGZpbHRlcihsYW1iZGEgZGVj
bDogaXNpbnN0YW5jZShkZWNsLnR5cGUsIEFsaWFzZWRUeXBlKSwgZG9tYWluLnR5cGVfZGVjbGFy
YXRpb25zKQorICAgICAgICBpZiBsZW4ocHJpbWl0aXZlX2RlY2xhcmF0aW9ucykgPT0gMDoKKyAg
ICAgICAgICAgIHJldHVybiAnJworCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgZm9y
IGRlY2xhcmF0aW9uIGluIHByaW1pdGl2ZV9kZWNsYXJhdGlvbnM6CisgICAgICAgICAgICBwcmlt
aXRpdmVfbmFtZSA9IEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoZGVjbGFy
YXRpb24udHlwZS5hbGlhc2VkX3R5cGUpCisgICAgICAgICAgICB0eXBlZGVmX2xpbmVzID0gW10K
KyAgICAgICAgICAgIGlmIGxlbihkZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikgPiAwOgorICAgICAg
ICAgICAgICAgIHR5cGVkZWZfbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBkZWNsYXJhdGlvbi5k
ZXNjcmlwdGlvbikKKyAgICAgICAgICAgIHR5cGVkZWZfbGluZXMuYXBwZW5kKCd0eXBlZGVmICVz
ICVzOycgJSAocHJpbWl0aXZlX25hbWUsIGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCisgICAgICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuJy5qb2luKHR5cGVkZWZfbGluZXMpKQorCisgICAgICAg
IGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCduYW1lc3BhY2UgJXMgeycgJSBkb21h
aW4uZG9tYWluX25hbWUpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnXG5cbicuam9pbihzZWN0aW9u
cykpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfSAvLyAlcycgJSBkb21haW4uZG9tYWluX25hbWUp
CisgICAgICAgIHJldHVybiBHZW5lcmF0b3Iud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4oZG9t
YWluLCAnXG4nLmpvaW4obGluZXMpKQorCisgICAgZGVmIF9nZW5lcmF0ZV9idWlsZGVyc19mb3Jf
ZG9tYWluKHNlbGYsIGRvbWFpbik6CisgICAgICAgIHNlY3Rpb25zID0gW10KKworICAgICAgICBm
b3IgdHlwZV9kZWNsYXJhdGlvbiBpbiBkb21haW4udHlwZV9kZWNsYXJhdGlvbnM6CisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKHR5cGVfZGVjbGFyYXRpb24udHlwZSwgRW51bVR5cGUpOgorICAg
ICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9yX2Vu
dW1fZGVjbGFyYXRpb24odHlwZV9kZWNsYXJhdGlvbikpCisgICAgICAgICAgICBlbGlmIGlzaW5z
dGFuY2UodHlwZV9kZWNsYXJhdGlvbi50eXBlLCBPYmplY3RUeXBlKToKKyAgICAgICAgICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfY2xhc3NfZm9yX29iamVjdF9kZWNsYXJh
dGlvbih0eXBlX2RlY2xhcmF0aW9uLCBkb21haW4pKQorCisgICAgICAgIHNlY3Rpb25zID0gZmls
dGVyKGxhbWJkYSBzZWN0aW9uOiBsZW4oc2VjdGlvbikgPiAwLCBzZWN0aW9ucykKKyAgICAgICAg
aWYgbGVuKHNlY3Rpb25zKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuICcnCisKKyAgICAgICAg
bGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJ25hbWVzcGFjZSAlcyB7JyAlIGRvbWFp
bi5kb21haW5fbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdcbicuam9pbihzZWN0aW9ucykp
CisgICAgICAgIGxpbmVzLmFwcGVuZCgnfSAvLyAlcycgJSBkb21haW4uZG9tYWluX25hbWUpCisg
ICAgICAgIHJldHVybiBHZW5lcmF0b3Iud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4oZG9tYWlu
LCAnXG4nLmpvaW4obGluZXMpKQorCisgICAgZGVmIF9nZW5lcmF0ZV9jbGFzc19mb3Jfb2JqZWN0
X2RlY2xhcmF0aW9uKHNlbGYsIHR5cGVfZGVjbGFyYXRpb24sIGRvbWFpbik6CisgICAgICAgIGlm
IGxlbih0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykgPT0gMDoKKyAgICAgICAgICAgIHJl
dHVybiAnJworCisgICAgICAgIGVudW1fbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBp
c2luc3RhbmNlKG1lbWJlci50eXBlLCBFbnVtVHlwZSkgYW5kIG1lbWJlci50eXBlLmlzX2Fub255
bW91cywgdHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCisgICAgICAgIHJlcXVpcmVkX21l
bWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwgdHlw
ZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCisgICAgICAgIG9wdGlvbmFsX21lbWJlcnMgPSBm
aWx0ZXIobGFtYmRhIG1lbWJlcjogbWVtYmVyLmlzX29wdGlvbmFsLCB0eXBlX2RlY2xhcmF0aW9u
LnR5cGVfbWVtYmVycykKKyAgICAgICAgb2JqZWN0X25hbWUgPSB0eXBlX2RlY2xhcmF0aW9uLnR5
cGVfbmFtZQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgaWYgbGVuKHR5cGVfZGVjbGFy
YXRpb24uZGVzY3JpcHRpb24pID4gMDoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnLyogJXMg
Ki8nICUgdHlwZV9kZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikKKyAgICAgICAgYmFzZV9jbGFzcyA9
ICdJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCcKKyAgICAgICAgaWYgbm90IEdlbmVyYXRvci50
eXBlX2hhc19vcGVuX2ZpZWxkcyh0eXBlX2RlY2xhcmF0aW9uLnR5cGUpOgorICAgICAgICAgICAg
YmFzZV9jbGFzcyA9IGJhc2VfY2xhc3MgKyAnQmFzZScKKyAgICAgICAgbGluZXMuYXBwZW5kKCdj
bGFzcyAlcyA6IHB1YmxpYyAlcyB7JyAlIChvYmplY3RfbmFtZSwgYmFzZV9jbGFzcykpCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgncHVibGljOicpCisgICAgICAgIGZvciBlbnVtX21lbWJlciBpbiBl
bnVtX21lbWJlcnM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAvLyBOYW1lZCBhZnRl
ciBwcm9wZXJ0eSBuYW1lIFwnJXNcJyB3aGlsZSBnZW5lcmF0aW5nICVzLicgJSAoZW51bV9tZW1i
ZXIubWVtYmVyX25hbWUsIG9iamVjdF9uYW1lKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChz
ZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9yX2Fub255bW91c19lbnVtX21lbWJlcihlbnVtX21lbWJl
cikpCisgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9idWlsZGVyX3N0YXRlX2Vu
dW0odHlwZV9kZWNsYXJhdGlvbikpCisKKyAgICAgICAgY29uc3RydWN0b3JfZXhhbXBsZSA9IFtd
CisgICAgICAgIGNvbnN0cnVjdG9yX2V4YW1wbGUuYXBwZW5kKCcgICAgICogUmVmUHRyPCVzPiBy
ZXN1bHQgPSAlczo6Y3JlYXRlKCknICUgKG9iamVjdF9uYW1lLCBvYmplY3RfbmFtZSkpCisgICAg
ICAgIGZvciBtZW1iZXIgaW4gcmVxdWlyZWRfbWVtYmVyczoKKyAgICAgICAgICAgIGNvbnN0cnVj
dG9yX2V4YW1wbGUuYXBwZW5kKCcgICAgICogICAgIC5zZXQlcyguLi4pJyAlIHVjZmlyc3QobWVt
YmVyLm1lbWJlcl9uYW1lKSkKKworICAgICAgICBidWlsZGVyX2FyZ3MgPSB7CisgICAgICAgICAg
ICAnb2JqZWN0VHlwZSc6IG9iamVjdF9uYW1lLAorICAgICAgICAgICAgJ2NvbnN0cnVjdG9yRXhh
bXBsZSc6ICdcbicuam9pbihjb25zdHJ1Y3Rvcl9leGFtcGxlKSArICc7JywKKyAgICAgICAgfQor
CisgICAgICAgIGxpbmVzLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuUHJvdG9jb2xPYmplY3RC
dWlsZGVyRGVjbGFyYXRpb25QcmVsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqYnVpbGRlcl9hcmdz
KSkKKyAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHJlcXVpcmVkX21lbWJlcnM6CisgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfYnVpbGRlcl9zZXR0ZXJfZm9yX21lbWJl
cih0eXBlX21lbWJlciwgZG9tYWluKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKFRlbXBsYXRlKFRl
bXBsYXRlcy5Qcm90b2NvbE9iamVjdEJ1aWxkZXJEZWNsYXJhdGlvblBvc3RsdWRlKS5zdWJzdGl0
dXRlKE5vbmUsICoqYnVpbGRlcl9hcmdzKSkKKyAgICAgICAgZm9yIG1lbWJlciBpbiBvcHRpb25h
bF9tZW1iZXJzOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX3VuY2hl
Y2tlZF9zZXR0ZXJfZm9yX21lbWJlcihtZW1iZXIsIGRvbWFpbikpCisKKyAgICAgICAgaWYgR2Vu
ZXJhdG9yLnR5cGVfaGFzX29wZW5fZmllbGRzKHR5cGVfZGVjbGFyYXRpb24udHlwZSk6CisgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAv
LyBQcm9wZXJ0eSBuYW1lcyBmb3IgdHlwZSBnZW5lcmF0ZWQgYXMgb3Blbi4nKQorICAgICAgICAg
ICAgZm9yIHR5cGVfbWVtYmVyIGluIHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzOgorICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdCBjaGFyKiAlczsnICUg
dWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJfbmFtZSkpCisKKyAgICAgICAgbGluZXMuYXBwZW5k
KCd9OycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVtX2RlY2xhcmF0aW9u
KHNlbGYsIGVudW1fZGVjbGFyYXRpb24pOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnLyogJXMgKi8nICUgZW51bV9kZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikKKyAg
ICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuX2dlbmVyYXRlX3N0cnVjdF9mb3JfZW51bV90eXBlKGVu
dW1fZGVjbGFyYXRpb24udHlwZV9uYW1lLCBlbnVtX2RlY2xhcmF0aW9uLnR5cGUpKQorICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9zdHJ1Y3RfZm9y
X2Fub255bW91c19lbnVtX21lbWJlcihzZWxmLCBlbnVtX21lbWJlcik6CisgICAgICAgIGRlZiBh
cHBseV9pbmRlbnRhdGlvbihsaW5lKToKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgo
JyMnLCAnLyonLCAnKi8nLCAnLy8nKSkgb3IgbGVuKGxpbmUpIGlzIDA6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGxpbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJu
ICcgICAgJyArIGxpbmUKKworICAgICAgICBpbmRlbnRlZF9saW5lcyA9IG1hcChhcHBseV9pbmRl
bnRhdGlvbiwgc2VsZi5fZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVtX3R5cGUoZW51bV9tZW1iZXIu
bWVtYmVyX25hbWUsIGVudW1fbWVtYmVyLnR5cGUpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2lu
KGluZGVudGVkX2xpbmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9zdHJ1Y3RfZm9yX2VudW1fdHlw
ZShzZWxmLCBlbnVtX25hbWUsIGVudW1fdHlwZSk6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAg
ICAgZW51bV9uYW1lID0gdWNmaXJzdChlbnVtX25hbWUpCisgICAgICAgIGxpbmVzLmFwcGVuZCgn
ZW51bSBjbGFzcyAlcyB7JyAlIGVudW1fbmFtZSkKKyAgICAgICAgZm9yIGVudW1fdmFsdWUgaW4g
ZW51bV90eXBlLmVudW1fdmFsdWVzKCk6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAl
cyA9ICVzLCcgJSAoR2VuZXJhdG9yLnN0eWxpemVkX25hbWVfZm9yX2VudW1fdmFsdWUoZW51bV92
YWx1ZSksIHNlbGYuZW5jb2RpbmdfZm9yX2VudW1fdmFsdWUoZW51bV92YWx1ZSkpKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoJ307IC8vIGVudW0gY2xhc3MgJXMnICUgZW51bV9uYW1lKQorICAgICAg
ICByZXR1cm4gbGluZXMgICMgVGhlIGNhbGxlciBtYXkgd2FudCB0byBhZGp1c3QgaW5kZW50YXRp
b24sIHNvIGRvbid0IGpvaW4gdGhlc2UgbGluZXMuCisKKyAgICBkZWYgX2dlbmVyYXRlX2J1aWxk
ZXJfc3RhdGVfZW51bShzZWxmLCB0eXBlX2RlY2xhcmF0aW9uKToKKyAgICAgICAgbGluZXMgPSBb
XQorICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IG5vdCBt
ZW1iZXIuaXNfb3B0aW9uYWwsIHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQorICAgICAg
ICBlbnVtX3ZhbHVlcyA9IFtdCisKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgZW51bSB7JykK
KyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIE5vRmllbGRzU2V0ID0gMCwnKQorICAgICAg
ICBmb3IgaSBpbiByYW5nZShsZW4ocmVxdWlyZWRfbWVtYmVycykpOgorICAgICAgICAgICAgZW51
bV92YWx1ZSA9ICIlc1NldCIgJSB1Y2ZpcnN0KHJlcXVpcmVkX21lbWJlcnNbaV0ubWVtYmVyX25h
bWUpCisgICAgICAgICAgICBlbnVtX3ZhbHVlcy5hcHBlbmQoZW51bV92YWx1ZSkKKyAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAlcyA9IDEgPDwgJWQsJyAlIChlbnVtX3ZhbHVlLCBp
KSkKKyAgICAgICAgaWYgbGVuKGVudW1fdmFsdWVzKSA+IDA6CisgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAgICAgQWxsRmllbGRzU2V0ID0gKCVzKScgJSAnIHwgJy5qb2luKGVudW1fdmFs
dWVzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBB
bGxGaWVsZHNTZXQgPSAwJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgfTsnKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoJycpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAg
ICBkZWYgX2dlbmVyYXRlX2J1aWxkZXJfc2V0dGVyX2Zvcl9tZW1iZXIoc2VsZiwgdHlwZV9tZW1i
ZXIsIGRvbWFpbik6CisgICAgICAgIHNldHRlcl9hcmdzID0geworICAgICAgICAgICAgJ2NhbWVs
TmFtZSc6IHVjZmlyc3QodHlwZV9tZW1iZXIubWVtYmVyX25hbWUpLAorICAgICAgICAgICAgJ2Zy
YW1ld29ya1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4Jyks
CisgICAgICAgICAgICAna2V5ZWRTZXQnOiBHZW5lcmF0b3Iua2V5ZWRfc2V0X21ldGhvZF9mb3Jf
dHlwZSh0eXBlX21lbWJlci50eXBlKSwKKyAgICAgICAgICAgICduYW1lJzogdHlwZV9tZW1iZXIu
bWVtYmVyX25hbWUsCisgICAgICAgICAgICAncGFyYW1ldGVyVHlwZSc6IEdlbmVyYXRvci50eXBl
X3N0cmluZ19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIpCisgICAgICAgIH0KKworICAgICAg
ICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCAlKGNhbWVsTmFtZSlzU2V0PiYgc2V0JShjYW1l
bE5hbWUpcyglKHBhcmFtZXRlclR5cGUpcyB2YWx1ZSknICUgc2V0dGVyX2FyZ3MpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgICAgICB7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgJShjYW1lbE5hbWUpc1NldCksIHByb3BlcnR5
XyUobmFtZSlzX2FscmVhZHlfc2V0KTsnICUgc2V0dGVyX2FyZ3MpCisKKyAgICAgICAgaWYgaXNp
bnN0YW5jZSh0eXBlX21lbWJlci50eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAgICAgICAgIG1fcmVzdWx0LT4lKGtleWVkU2V0KXMoQVNDSUlMaXRlcmFsKCIl
KG5hbWUpcyIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXQlKGZyYW1ld29ya1ByZWZpeClzRW51
bUNvbnN0YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpKTsnICUgc2V0dGVyX2FyZ3Mp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIG1f
cmVzdWx0LT4lKGtleWVkU2V0KXMoQVNDSUlMaXRlcmFsKCIlKG5hbWUpcyIpLCB2YWx1ZSk7JyAl
IHNldHRlcl9hcmdzKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIHJldHVybiBj
YXN0U3RhdGU8JShjYW1lbE5hbWUpc1NldD4oKTsnICUgc2V0dGVyX2FyZ3MpCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgICAgICB9JykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykK
KworICAgIGRlZiBfZ2VuZXJhdGVfdW5jaGVja2VkX3NldHRlcl9mb3JfbWVtYmVyKHNlbGYsIHR5
cGVfbWVtYmVyLCBkb21haW4pOgorICAgICAgICBzZXR0ZXJfYXJncyA9IHsKKyAgICAgICAgICAg
ICdjYW1lbE5hbWUnOiB1Y2ZpcnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lKSwKKyAgICAgICAg
ICAgICdmcmFtZXdvcmtQcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3By
ZWZpeCcpLAorICAgICAgICAgICAgJ2tleWVkU2V0JzogR2VuZXJhdG9yLmtleWVkX3NldF9tZXRo
b2RfZm9yX3R5cGUodHlwZV9tZW1iZXIudHlwZSksCisgICAgICAgICAgICAnbmFtZSc6IHR5cGVf
bWVtYmVyLm1lbWJlcl9uYW1lLAorICAgICAgICAgICAgJ3BhcmFtZXRlclR5cGUnOiBHZW5lcmF0
b3IudHlwZV9zdHJpbmdfZm9yX3R5cGVfbWVtYmVyKHR5cGVfbWVtYmVyKQorICAgICAgICB9CisK
KyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIHZvaWQgc2V0JShjYW1lbE5hbWUpcyglKHBhcmFtZXRlclR5cGUpcyB2
YWx1ZSknICUgc2V0dGVyX2FyZ3MpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHsnKQorICAg
ICAgICBpZiBpc2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5cGUsIEVudW1UeXBlKToKKyAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjolKGtleWVkU2V0
KXMoQVNDSUlMaXRlcmFsKCIlKG5hbWUpcyIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXQlKGZy
YW1ld29ya1ByZWZpeClzRW51bUNvbnN0YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkp
KTsnICUgc2V0dGVyX2FyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6JShrZXllZFNldClzKEFTQ0lJTGl0ZXJh
bCgiJShuYW1lKXMiKSwgdmFsdWUpOycgJSBzZXR0ZXJfYXJncykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgfScpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYg
X2dlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9iaW5kaW5nX3RyYWl0cyhzZWxmKToK
KyAgICAgICAgIyBBIGxpc3Qgb2YgKGJ1aWxkZXJfdHlwZSwgbmVlZHNfcnVudGltZV9jYXN0KQor
ICAgICAgICB0eXBlX2FyZ3VtZW50cyA9IFtdCisKKyAgICAgICAgZm9yIGRvbWFpbiBpbiBzZWxm
LmRvbWFpbnNfdG9fZ2VuZXJhdGUoKToKKyAgICAgICAgICAgIGRlY2xhcmF0aW9uc190b19nZW5l
cmF0ZSA9IGZpbHRlcihsYW1iZGEgZGVjbDogc2VsZi50eXBlX25lZWRzX3NoYXBlX2Fzc2VydGlv
bnMoZGVjbC50eXBlKSwgZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zKQorCisgICAgICAgICAgICBm
b3IgdHlwZV9kZWNsYXJhdGlvbiBpbiBkZWNsYXJhdGlvbnNfdG9fZ2VuZXJhdGU6CisgICAgICAg
ICAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJz
OgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5cGUsIEVu
dW1UeXBlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfYXJndW1lbnRzLmFwcGVuZCgo
R2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJl
ciwgdHlwZV9kZWNsYXJhdGlvbiksIEZhbHNlKSkKKworICAgICAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UodHlwZV9kZWNsYXJhdGlvbi50eXBlLCBPYmplY3RUeXBlKToKKyAgICAgICAgICAgICAg
ICAgICAgdHlwZV9hcmd1bWVudHMuYXBwZW5kKChHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJp
bmdfZm9yX3R5cGUodHlwZV9kZWNsYXJhdGlvbi50eXBlKSwgR2VuZXJhdG9yLnR5cGVfbmVlZHNf
cnVudGltZV9jYXN0cyh0eXBlX2RlY2xhcmF0aW9uLnR5cGUpKSkKKworICAgICAgICBzdHJ1Y3Rf
a2V5d29yZHMgPSBbJ3N0cnVjdCddCisgICAgICAgIGZ1bmN0aW9uX2tleXdvcmRzID0gWydzdGF0
aWMgdm9pZCddCisgICAgICAgIGV4cG9ydF9tYWNybyA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsu
c2V0dGluZygnZXhwb3J0X21hY3JvJywgTm9uZSkKKyAgICAgICAgaWYgZXhwb3J0X21hY3JvIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgc3RydWN0X2tleXdvcmRzLmFwcGVuZChleHBvcnRfbWFj
cm8pCisgICAgICAgICAgICAjZnVuY3Rpb25fa2V5d29yZHNbMToxXSA9IFtleHBvcnRfbWFjcm9d
CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBmb3IgYXJndW1lbnQgaW4gdHlwZV9hcmd1
bWVudHM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3RlbXBsYXRlPD4gJXMgQmluZGluZ1Ry
YWl0czwlcz4geycgJSAoJyAnLmpvaW4oc3RydWN0X2tleXdvcmRzKSwgYXJndW1lbnRbMF0pKQor
ICAgICAgICAgICAgaWYgYXJndW1lbnRbMV06CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5k
KCdzdGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiB2YWx1ZSk7JyAlIGFyZ3VtZW50WzBdKQorICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyVzIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUqKTsnICUgJyAnLmpvaW4oZnVuY3Rpb25fa2V5d29yZHMpKQorICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJ307JykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVt
ZW50YXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI3ZTkzM2MzOGI2NmRlODgxYWE2MDA5YjRiODEzMGNj
ZWMzYzIzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9u
LnB5CkBAIC0wLDAgKzEsMTg0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IChjKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dp
bmcKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGdl
bmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yLCB1Y2ZpcnN0Citmcm9tIGdlbmVyYXRvcl90ZW1wbGF0
ZXMgaW1wb3J0IEdlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKK2Zyb20gbW9kZWxzIGlt
cG9ydCBBbGlhc2VkVHlwZSwgQXJyYXlUeXBlLCBFbnVtVHlwZSwgT2JqZWN0VHlwZQorCitsb2cg
PSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bW9kZWwsIGlucHV0X2ZpbGVwYXRoKToKKyAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYs
IG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKKworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6
CisgICAgICAgIHJldHVybiAiSW5zcGVjdG9yJXNQcm90b2NvbFR5cGVzLmNwcCIgJSBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0
cHV0KHNlbGYpOgorICAgICAgICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dlbmVyYXRlKCkK
KyAgICAgICAgc2VsZi5jYWxjdWxhdGVfdHlwZXNfcmVxdWlyaW5nX3NoYXBlX2Fzc2VydGlvbnMo
ZG9tYWlucykKKworICAgICAgICBzZWNvbmRhcnlfaGVhZGVycyA9IFsnPHd0Zi90ZXh0L0NTdHJp
bmcuaD4nXQorCisgICAgICAgIGhlYWRlcl9hcmdzID0geworICAgICAgICAgICAgJ3ByaW1hcnlJ
bmNsdWRlJzogJyJJbnNwZWN0b3Ilc1Byb3RvY29sVHlwZXMuaCInICUgc2VsZi5tb2RlbCgpLmZy
YW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKKyAgICAgICAgICAgICdzZWNvbmRhcnlJbmNsdWRl
cyc6ICJcbiIuam9pbihbJyNpbmNsdWRlICVzJyAlIGhlYWRlciBmb3IgaGVhZGVyIGluIHNlY29u
ZGFyeV9oZWFkZXJzXSksCisgICAgICAgICAgICAnaW5wdXRGaWxlbmFtZSc6IHNlbGYuX2lucHV0
X2ZpbGVwYXRoCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBJbXBsZW1lbnRhdGlvblByZWx1ZGUpLnN1YnN0
aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnbmFt
ZXNwYWNlIFByb3RvY29sIHsnKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJh
dGVfZW51bV9tYXBwaW5nKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0
ZV9vcGVuX2ZpZWxkX25hbWVzKCkpCisgICAgICAgIGJ1aWxkZXJfc2VjdGlvbnMgPSBtYXAoc2Vs
Zi5fZ2VuZXJhdGVfYnVpbGRlcnNfZm9yX2RvbWFpbiwgZG9tYWlucykKKyAgICAgICAgc2VjdGlv
bnMuZXh0ZW5kKGZpbHRlcihsYW1iZGEgc2VjdGlvbjogbGVuKHNlY3Rpb24pID4gMCwgYnVpbGRl
cl9zZWN0aW9ucykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgUHJv
dG9jb2wnKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNwcElt
cGxlbWVudGF0aW9uUG9zdGx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCisK
KyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgIyBQcml2YXRlIG1l
dGhvZHMuCisKKyAgICBkZWYgX2dlbmVyYXRlX2VudW1fbWFwcGluZyhzZWxmKToKKyAgICAgICAg
ZnJhbWV3b3JrX3ByZWZpeCA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4
JykKKyAgICAgICAgbGluZXMgPSBbXQorCisgICAgICAgIGxpbmVzLmFwcGVuZCgnc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7JykKKyAgICAgICAgbGlu
ZXMuZXh0ZW5kKFsnICAgICIlcyIsJyAlIGVudW1fdmFsdWUgZm9yIGVudW1fdmFsdWUgaW4gc2Vs
Zi5hc3NpZ25lZF9lbnVtX3ZhbHVlcygpXSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9OycpCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCdTdHJpbmcgZ2V0
JXNFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgeycgJSBmcmFtZXdvcmtfcHJlZml4KQorICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4gZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07
JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKKworICAgICAgICByZXR1cm4gJ1xuJy5qb2lu
KGxpbmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9vcGVuX2ZpZWxkX25hbWVzKHNlbGYpOgorICAg
ICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciBkb21haW4gaW4gc2VsZi5kb21haW5zX3RvX2dl
bmVyYXRlKCk6CisgICAgICAgICAgICBmb3IgdHlwZV9kZWNsYXJhdGlvbiBpbiBmaWx0ZXIobGFt
YmRhIGRlY2w6IEdlbmVyYXRvci50eXBlX2hhc19vcGVuX2ZpZWxkcyhkZWNsLnR5cGUpLCBkb21h
aW4udHlwZV9kZWNsYXJhdGlvbnMpOgorICAgICAgICAgICAgICAgIGZvciB0eXBlX21lbWJlciBp
biBzb3J0ZWQodHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMsIGtleT1sYW1iZGEgbWVtYmVy
OiBtZW1iZXIubWVtYmVyX25hbWUpOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9uYW1lID0g
Jzo6Jy5qb2luKFsnSW5zcGVjdG9yJywgJ1Byb3RvY29sJywgZG9tYWluLmRvbWFpbl9uYW1lLCB1
Y2ZpcnN0KHR5cGVfZGVjbGFyYXRpb24udHlwZV9uYW1lKSwgdWNmaXJzdCh0eXBlX21lbWJlci5t
ZW1iZXJfbmFtZSldKQorICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ2NvbnN0IGNo
YXIqICVzID0gIiVzIjsnICUgKGZpZWxkX25hbWUsIHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lKSkK
KworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9i
dWlsZGVyc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CisgICAgICAgIHNlY3Rpb25zID0gW10K
KyAgICAgICAgZGVjbGFyYXRpb25zX3RvX2dlbmVyYXRlID0gZmlsdGVyKGxhbWJkYSBkZWNsOiBz
ZWxmLnR5cGVfbmVlZHNfc2hhcGVfYXNzZXJ0aW9ucyhkZWNsLnR5cGUpLCBkb21haW4udHlwZV9k
ZWNsYXJhdGlvbnMpCisKKyAgICAgICAgZm9yIHR5cGVfZGVjbGFyYXRpb24gaW4gZGVjbGFyYXRp
b25zX3RvX2dlbmVyYXRlOgorICAgICAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHR5cGVfZGVj
bGFyYXRpb24udHlwZV9tZW1iZXJzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlw
ZV9tZW1iZXIudHlwZSwgRW51bVR5cGUpOgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoc2VsZi5fZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9lbnVtKHR5cGVfbWVtYmVyLCB0eXBl
X2RlY2xhcmF0aW9uKSkKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX2RlY2xhcmF0
aW9uLnR5cGUsIE9iamVjdFR5cGUpOgorICAgICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLl9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX29iamVjdF9kZWNsYXJhdGlvbih0eXBlX2RlY2xh
cmF0aW9uKSkKKyAgICAgICAgICAgICAgICBpZiBHZW5lcmF0b3IudHlwZV9uZWVkc19ydW50aW1l
X2Nhc3RzKHR5cGVfZGVjbGFyYXRpb24udHlwZSk6CisgICAgICAgICAgICAgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9ydW50aW1lX2Nhc3RfZm9yX29iamVjdF9kZWNsYXJh
dGlvbih0eXBlX2RlY2xhcmF0aW9uKSkKKworICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc2Vj
dGlvbnMpCisKKyAgICBkZWYgX2dlbmVyYXRlX3J1bnRpbWVfY2FzdF9mb3Jfb2JqZWN0X2RlY2xh
cmF0aW9uKHNlbGYsIG9iamVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIGFyZ3MgPSB7CisgICAg
ICAgICAgICAnb2JqZWN0VHlwZSc6IEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3Jf
dHlwZShvYmplY3RfZGVjbGFyYXRpb24udHlwZSkKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
VGVtcGxhdGUoVGVtcGxhdGVzLlByb3RvY29sT2JqZWN0UnVudGltZUNhc3QpLnN1YnN0aXR1dGUo
Tm9uZSwgKiphcmdzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX29iamVjdF9k
ZWNsYXJhdGlvbihzZWxmLCBvYmplY3RfZGVjbGFyYXRpb24pOgorICAgICAgICByZXF1aXJlZF9t
ZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWwsIG9i
amVjdF9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCisgICAgICAgIG9wdGlvbmFsX21lbWJlcnMg
PSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbWVtYmVyLmlzX29wdGlvbmFsLCBvYmplY3RfZGVjbGFy
YXRpb24udHlwZV9tZW1iZXJzKQorICAgICAgICBzaG91bGRfY291bnRfcHJvcGVydGllcyA9IG5v
dCBHZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVsZHMob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUp
CisgICAgICAgIGxpbmVzID0gW10KKworICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiAhQVNTRVJU
X0RJU0FCTEVEJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkIEJpbmRpbmdUcmFpdHM8JXM+
Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2
YWx1ZSknICUgKEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShvYmplY3Rf
ZGVjbGFyYXRpb24udHlwZSkpKQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIieworICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKKyAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNP
YmplY3QoJm9iamVjdCk7CisgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsiIiIp
CisgICAgICAgIGZvciB0eXBlX21lbWJlciBpbiByZXF1aXJlZF9tZW1iZXJzOgorICAgICAgICAg
ICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnbWVtYmVyTmFtZSc6IHR5cGVfbWVtYmVyLm1l
bWJlcl9uYW1lLAorICAgICAgICAgICAgICAgICdhc3NlcnRNZXRob2QnOiBHZW5lcmF0b3IuYXNz
ZXJ0aW9uX21ldGhvZF9mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJh
dGlvbikKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiIiAgICB7
CisgICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgJShtZW1iZXJOYW1lKXNQb3MgPSBv
YmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCIlKG1lbWJlck5hbWUpcyIpKTsKKyAgICAgICAgQVNT
RVJUKCUobWVtYmVyTmFtZSlzUG9zICE9IG9iamVjdC0+ZW5kKCkpOworICAgICAgICAlKGFzc2Vy
dE1ldGhvZClzKCUobWVtYmVyTmFtZSlzUG9zLT52YWx1ZS5nZXQoKSk7CisgICAgfSIiIiAlIGFy
Z3MpCisKKyAgICAgICAgaWYgc2hvdWxkX2NvdW50X3Byb3BlcnRpZXM6CisgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpbnQgZm91bmRQ
cm9wZXJ0aWVzQ291bnQgPSAlczsnICUgbGVuKHJlcXVpcmVkX21lbWJlcnMpKQorCisgICAgICAg
IGZvciB0eXBlX21lbWJlciBpbiBvcHRpb25hbF9tZW1iZXJzOgorICAgICAgICAgICAgYXJncyA9
IHsKKyAgICAgICAgICAgICAgICAnbWVtYmVyTmFtZSc6IHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1l
LAorICAgICAgICAgICAgICAgICdhc3NlcnRNZXRob2QnOiBHZW5lcmF0b3IuYXNzZXJ0aW9uX21l
dGhvZF9mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbikKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiIiAgICB7CisgICAgICAg
IEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgJShtZW1iZXJOYW1lKXNQb3MgPSBvYmplY3QtPmZp
bmQoQVNDSUlMaXRlcmFsKCIlKG1lbWJlck5hbWUpcyIpKTsKKyAgICAgICAgaWYgKCUobWVtYmVy
TmFtZSlzUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKKyAgICAgICAgICAgICUoYXNzZXJ0TWV0aG9k
KXMoJShtZW1iZXJOYW1lKXNQb3MtPnZhbHVlLmdldCgpKTsiIiIgJSBhcmdzKQorCisgICAgICAg
ICAgICBpZiBzaG91bGRfY291bnRfcHJvcGVydGllczoKKyAgICAgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7JykKKyAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgICAgICB9JykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IH0nKQorCisgICAgICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzOgorICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6
ZSgpKScpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgRkFUQUwoIlVuZXhwZWN0
ZWQgcHJvcGVydGllcyBpbiBvYmplY3Q6ICVzXFxuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAgIHJldHVybiAn
XG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgX2dlbmVyYXRlX2Fzc2VydGlvbl9mb3JfZW51bShz
ZWxmLCBlbnVtX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKToKKyAgICAgICAgbGluZXMgPSBb
XQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJU0FCTEVEJykKKyAgICAgICAg
bGluZXMuYXBwZW5kKCd2b2lkICVzKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKScg
JSBHZW5lcmF0b3IuYXNzZXJ0aW9uX21ldGhvZF9mb3JfdHlwZV9tZW1iZXIoZW51bV9tZW1iZXIs
IG9iamVjdF9kZWNsYXJhdGlvbikpCisgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIFN0cmluZyBzOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpOycpCisgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIEFTU0VSVChjYXN0X3Jlcyk7JykKKworICAgICAgICBhc3NlcnRfY29uZGl0aW9u
ID0gJyB8fCAnLmpvaW4oWydzID09ICIlcyInICUgZW51bV92YWx1ZSBmb3IgZW51bV92YWx1ZSBp
biBlbnVtX21lbWJlci50eXBlLmVudW1fdmFsdWVzKCldKQorICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICBBU1NFUlQoJXMpOycgJSBhc3NlcnRfY29uZGl0aW9uKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJ30nKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
JykKKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9i
dWlsZGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDc5ZjY3NmY2ZTViMjg1MzQxYTNiMWEyZDQ3MDE1ODBhMjdlNTFmYmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWls
ZGVyX2hlYWRlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDM0NiArMCwwIEBACi0jIS91c3IvYmlu
L2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZQotaW1wb3J0IHN0cmluZwotZnJv
bSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCi0KLWZyb20gZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0
b3IsIHVjZmlyc3QKLWZyb20gZ2VuZXJhdG9yX3RlbXBsYXRlcyBpbXBvcnQgR2VuZXJhdG9yVGVt
cGxhdGVzIGFzIFRlbXBsYXRlcwotZnJvbSBtb2RlbHMgaW1wb3J0IEVudW1UeXBlLCBPYmplY3RU
eXBlLCBQcmltaXRpdmVUeXBlLCBBbGlhc2VkVHlwZSwgQXJyYXlUeXBlLCBGcmFtZXdvcmtzCi0K
LWxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQotCi0KLWNsYXNzIFR5cGVCdWlsZGVy
SGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVs
LCBpbnB1dF9maWxlcGF0aCk6Ci0gICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2Rl
bCwgaW5wdXRfZmlsZXBhdGgpCi0KLSAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgotICAg
ICAgICByZXR1cm4gIkluc3BlY3RvciVzVHlwZUJ1aWxkZXJzLmgiICUgc2VsZi5tb2RlbCgpLmZy
YW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKQotCi0gICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxm
KToKLSAgICAgICAgZG9tYWlucyA9IHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpCi0gICAgICAg
IHNlbGYuY2FsY3VsYXRlX3R5cGVzX3JlcXVpcmluZ19zaGFwZV9hc3NlcnRpb25zKGRvbWFpbnMp
Ci0KLSAgICAgICAgaGVhZGVycyA9IHNldChbCi0gICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNw
ZWN0b3JUeXBlQnVpbGRlci5oPicsCi0gICAgICAgICAgICAnPHd0Zi9Bc3NlcnRpb25zLmg+JywK
LSAgICAgICAgICAgICc8d3RmL1Bhc3NSZWZQdHIuaD4nCi0gICAgICAgIF0pCi0KLSAgICAgICAg
aWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBub3QgRnJhbWV3b3Jrcy5KYXZhU2NyaXB0Q29y
ZToKLSAgICAgICAgICAgIGhlYWRlcnMuYWRkKCc8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1
aWxkZXJzLmg+JykKLQotICAgICAgICBleHBvcnRfbWFjcm8gPSBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLnNldHRpbmcoJ2V4cG9ydF9tYWNybycsIE5vbmUpCi0gICAgICAgIGZyYW1ld29ya19wcmVm
aXggPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpCi0KLSAgICAgICAg
aGVhZGVyX2FyZ3MgPSB7Ci0gICAgICAgICAgICAnaGVhZGVyR3VhcmRTdHJpbmcnOiByZS5zdWIo
J1xXKycsICdfJywgc2VsZi5vdXRwdXRfZmlsZW5hbWUoKSksCi0gICAgICAgICAgICAnaW5jbHVk
ZXMnOiAnXG4nLmpvaW4oWycjaW5jbHVkZSAnICsgaGVhZGVyIGZvciBoZWFkZXIgaW4gc29ydGVk
KGhlYWRlcnMpXSksCi0gICAgICAgICAgICAndHlwZWRlZnMnOiAnJywKLSAgICAgICAgICAgICdp
bnB1dEZpbGVuYW1lJzogc2VsZi5faW5wdXRfZmlsZXBhdGgKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybl90eXBlID0gJ1N0cmluZycKLSAgICAgICAgcmV0dXJuX3R5cGVfd2l0aF9leHBvcnRf
bWFjcm8gPSBbcmV0dXJuX3R5cGVdCi0gICAgICAgIGlmIGV4cG9ydF9tYWNybyBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIHJldHVybl90eXBlX3dpdGhfZXhwb3J0X21hY3JvWzowXSA9IFtleHBv
cnRfbWFjcm9dCi0KLSAgICAgICAgc2VjdGlvbnMgPSBbXQotICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuQ3BwSGVhZGVyUHJlbHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRl
cl9hcmdzKSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCduYW1lc3BhY2UgVHlwZUJ1aWxkZXIg
eycpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9mb3J3YXJkX2RlY2xh
cmF0aW9ucyhkb21haW5zKSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRl
X3R5cGVkZWZzKGRvbWFpbnMpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJyVzIGdldCVzRW51
bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpOycgJSAoJyAnLmpvaW4ocmV0dXJuX3R5cGVfd2l0aF9l
eHBvcnRfbWFjcm8pLCBmcmFtZXdvcmtfcHJlZml4KSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KCdcbicuam9pbihbCi0gICAgICAgICAgICAndGVtcGxhdGU8dHlwZW5hbWUgVD4gJXMgZ2V0JXNF
bnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSknICUgKHJldHVybl90eXBlLCBmcmFtZXdvcmtf
cHJlZml4KSwKLSAgICAgICAgICAgICd7JywKLSAgICAgICAgICAgICcgICAgcmV0dXJuIGdldCVz
RW51bUNvbnN0YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50PihlbnVtVmFsdWUpKTsnICUgZnJhbWV3
b3JrX3ByZWZpeCwKLSAgICAgICAgICAgICd9J10pKQotCi0gICAgICAgIGJ1aWxkZXJfc2VjdGlv
bnMgPSBtYXAoc2VsZi5fZ2VuZXJhdGVfYnVpbGRlcnNfZm9yX2RvbWFpbiwgZG9tYWlucykKLSAg
ICAgICAgc2VjdGlvbnMuZXh0ZW5kKGZpbHRlcihsYW1iZGEgc2VjdGlvbjogbGVuKHNlY3Rpb24p
ID4gMCwgYnVpbGRlcl9zZWN0aW9ucykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9n
ZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfYmluZGluZ190cmFpdHMoKSkKLSAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcicpCi0gICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ3BwSGVhZGVyUG9zdGx1ZGUpLnN1
YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCi0gICAgICAgIHJldHVybiAiXG5cbiIuam9p
bihzZWN0aW9ucykKLQotICAgICMgUHJpdmF0ZSBtZXRob2RzLgotCi0gICAgIyBGSVhNRTogbW92
ZSBidWlsZGVycyBvdXQgb2YgY2xhc3NlcywgdW5jb21tZW50IGZvcndhcmQgZGVjbGFyYXRpb24K
LQotICAgIGRlZiBfZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZiwgZG9tYWlucyk6
Ci0gICAgICAgIHNlY3Rpb25zID0gW10KLQotICAgICAgICBmb3IgZG9tYWluIGluIGRvbWFpbnM6
Ci0gICAgICAgICAgICBkZWNsYXJhdGlvbl90eXBlcyA9IFtkZWNsLnR5cGUgZm9yIGRlY2wgaW4g
ZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zXQotICAgICAgICAgICAgb2JqZWN0X3R5cGVzID0gZmls
dGVyKGxhbWJkYSBfdHlwZTogaXNpbnN0YW5jZShfdHlwZSwgT2JqZWN0VHlwZSksIGRlY2xhcmF0
aW9uX3R5cGVzKQotICAgICAgICAgICAgZW51bV90eXBlcyA9IGZpbHRlcihsYW1iZGEgX3R5cGU6
IGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKSwgZGVjbGFyYXRpb25fdHlwZXMpCi0gICAgICAg
ICAgICBpZiBsZW4ob2JqZWN0X3R5cGVzKSArIGxlbihlbnVtX3R5cGVzKSA9PSAwOgotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGRvbWFpbl9saW5lcyA9IFtdCi0gICAg
ICAgICAgICBkb21haW5fbGluZXMuYXBwZW5kKCduYW1lc3BhY2UgJXMgeycgJSBkb21haW4uZG9t
YWluX25hbWUpCi0KLSAgICAgICAgICAgIG9iamVjdF90eXBlX25hbWVzID0gW190eXBlLnJhd19u
YW1lKCkgZm9yIF90eXBlIGluIG9iamVjdF90eXBlc10KLSAgICAgICAgICAgIGVudW1fdHlwZV9u
YW1lcyA9IFtfdHlwZS5yYXdfbmFtZSgpIGZvciBfdHlwZSBpbiBlbnVtX3R5cGVzXQotCi0gICAg
ICAgICAgICAjIEZvcndhcmQtZGVjbGFyZSBhbGwgY2xhc3NlcyBzbyB0aGUgdHlwZSBidWlsZGVy
cyB3b24ndCBicmVhayBpZiByZWFycmFuZ2VkLgotICAgICAgICAgICAgZG9tYWluX2xpbmVzLmV4
dGVuZCgnY2xhc3MgJXM7JyAlIG5hbWUgZm9yIG5hbWUgaW4gc29ydGVkKG9iamVjdF90eXBlX25h
bWVzKSkKLSAgICAgICAgICAgIGRvbWFpbl9saW5lcy5leHRlbmQoJ2VudW0gY2xhc3MgJXM7JyAl
IG5hbWUgZm9yIG5hbWUgaW4gc29ydGVkKGVudW1fdHlwZV9uYW1lcykpCi0gICAgICAgICAgICBk
b21haW5fbGluZXMuYXBwZW5kKCd9IC8vICVzJyAlIGRvbWFpbi5kb21haW5fbmFtZSkKLSAgICAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChHZW5lcmF0b3Iud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21h
aW4oZG9tYWluLCAnXG4nLmpvaW4oZG9tYWluX2xpbmVzKSkpCi0KLSAgICAgICAgaWYgbGVuKHNl
Y3Rpb25zKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICByZXR1cm4gIiIiLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCi0lcwotLy8gRW5kIG9m
IGZvcndhcmQgZGVjbGFyYXRpb25zLgotIiIiICUgJ1xuXG4nLmpvaW4oc2VjdGlvbnMpCi0KLSAg
ICBkZWYgX2dlbmVyYXRlX3R5cGVkZWZzKHNlbGYsIGRvbWFpbnMpOgotICAgICAgICBzZWN0aW9u
cyA9IG1hcChzZWxmLl9nZW5lcmF0ZV90eXBlZGVmc19mb3JfZG9tYWluLCBkb21haW5zKQotICAg
ICAgICBzZWN0aW9ucyA9IGZpbHRlcihsYW1iZGEgdGV4dDogbGVuKHRleHQpID4gMCwgc2VjdGlv
bnMpCi0KLSAgICAgICAgaWYgbGVuKHNlY3Rpb25zKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJu
ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIiIiLy8gVHlwZWRlZnMuCi0l
cwotLy8gRW5kIG9mIHR5cGVkZWZzLiIiIiAlICdcblxuJy5qb2luKHNlY3Rpb25zKQotCi0gICAg
ZGVmIF9nZW5lcmF0ZV90eXBlZGVmc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6Ci0gICAgICAg
IHByaW1pdGl2ZV9kZWNsYXJhdGlvbnMgPSBmaWx0ZXIobGFtYmRhIGRlY2w6IGlzaW5zdGFuY2Uo
ZGVjbC50eXBlLCBBbGlhc2VkVHlwZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucykKLSAgICAg
ICAgaWYgbGVuKHByaW1pdGl2ZV9kZWNsYXJhdGlvbnMpID09IDA6Ci0gICAgICAgICAgICByZXR1
cm4gJycKLQotICAgICAgICBzZWN0aW9ucyA9IFtdCi0gICAgICAgIGZvciBkZWNsYXJhdGlvbiBp
biBwcmltaXRpdmVfZGVjbGFyYXRpb25zOgotICAgICAgICAgICAgcHJpbWl0aXZlX25hbWUgPSBH
ZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKGRlY2xhcmF0aW9uLnR5cGUuYWxp
YXNlZF90eXBlKQotICAgICAgICAgICAgdHlwZWRlZl9saW5lcyA9IFtdCi0gICAgICAgICAgICBp
ZiBsZW4oZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pID4gMDoKLSAgICAgICAgICAgICAgICB0eXBl
ZGVmX2xpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pCi0g
ICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgndHlwZWRlZiAlcyAlczsnICUgKHByaW1p
dGl2ZV9uYW1lLCBkZWNsYXJhdGlvbi50eXBlX25hbWUpKQotICAgICAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKCdcbicuam9pbih0eXBlZGVmX2xpbmVzKSkKLQotICAgICAgICBsaW5lcyA9IFtdCi0g
ICAgICAgIGxpbmVzLmFwcGVuZCgnbmFtZXNwYWNlICVzIHsnICUgZG9tYWluLmRvbWFpbl9uYW1l
KQotICAgICAgICBsaW5lcy5hcHBlbmQoJ1xuXG4nLmpvaW4oc2VjdGlvbnMpKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJ30gLy8gJXMnICUgZG9tYWluLmRvbWFpbl9uYW1lKQotICAgICAgICByZXR1
cm4gR2VuZXJhdG9yLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ1xuJy5qb2lu
KGxpbmVzKSkKLQotICAgIGRlZiBfZ2VuZXJhdGVfYnVpbGRlcnNfZm9yX2RvbWFpbihzZWxmLCBk
b21haW4pOgotICAgICAgICBzZWN0aW9ucyA9IFtdCi0KLSAgICAgICAgZm9yIHR5cGVfZGVjbGFy
YXRpb24gaW4gZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zOgotICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZSh0eXBlX2RlY2xhcmF0aW9uLnR5cGUsIEVudW1UeXBlKToKLSAgICAgICAgICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVtX2RlY2xhcmF0aW9u
KHR5cGVfZGVjbGFyYXRpb24pKQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHR5cGVfZGVj
bGFyYXRpb24udHlwZSwgT2JqZWN0VHlwZSk6Ci0gICAgICAgICAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKHNlbGYuX2dlbmVyYXRlX2NsYXNzX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24odHlwZV9kZWNs
YXJhdGlvbiwgZG9tYWluKSkKLQotICAgICAgICBzZWN0aW9ucyA9IGZpbHRlcihsYW1iZGEgc2Vj
dGlvbjogbGVuKHNlY3Rpb24pID4gMCwgc2VjdGlvbnMpCi0gICAgICAgIGlmIGxlbihzZWN0aW9u
cykgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAnJwotCi0gICAgICAgIGxpbmVzID0gW10KLSAg
ICAgICAgbGluZXMuYXBwZW5kKCduYW1lc3BhY2UgJXMgeycgJSBkb21haW4uZG9tYWluX25hbWUp
Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgnXG4nLmpvaW4oc2VjdGlvbnMpKQotICAgICAgICBsaW5l
cy5hcHBlbmQoJ30gLy8gJXMnICUgZG9tYWluLmRvbWFpbl9uYW1lKQotICAgICAgICByZXR1cm4g
R2VuZXJhdG9yLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ1xuJy5qb2luKGxp
bmVzKSkKLQotICAgIGRlZiBfZ2VuZXJhdGVfY2xhc3NfZm9yX29iamVjdF9kZWNsYXJhdGlvbihz
ZWxmLCB0eXBlX2RlY2xhcmF0aW9uLCBkb21haW4pOgotICAgICAgICBpZiBsZW4odHlwZV9kZWNs
YXJhdGlvbi50eXBlX21lbWJlcnMpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gJycKLQotICAg
ICAgICBlbnVtX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogaXNpbnN0YW5jZShtZW1i
ZXIudHlwZSwgRW51bVR5cGUpIGFuZCBtZW1iZXIudHlwZS5pc19hbm9ueW1vdXMsIHR5cGVfZGVj
bGFyYXRpb24udHlwZV9tZW1iZXJzKQotICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmlsdGVy
KGxhbWJkYSBtZW1iZXI6IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWwsIHR5cGVfZGVjbGFyYXRpb24u
dHlwZV9tZW1iZXJzKQotICAgICAgICBvcHRpb25hbF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBt
ZW1iZXI6IG1lbWJlci5pc19vcHRpb25hbCwgdHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMp
Ci0gICAgICAgIG9iamVjdF9uYW1lID0gdHlwZV9kZWNsYXJhdGlvbi50eXBlX25hbWUKLQotICAg
ICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGlmIGxlbih0eXBlX2RlY2xhcmF0aW9uLmRlc2NyaXB0
aW9uKSA+IDA6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIHR5cGVfZGVj
bGFyYXRpb24uZGVzY3JpcHRpb24pCi0gICAgICAgIGJhc2VfY2xhc3MgPSAnSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QnCi0gICAgICAgIGlmIG5vdCBHZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9m
aWVsZHModHlwZV9kZWNsYXJhdGlvbi50eXBlKToKLSAgICAgICAgICAgIGJhc2VfY2xhc3MgPSBi
YXNlX2NsYXNzICsgJ0Jhc2UnCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnY2xhc3MgJXMgOiBwdWJs
aWMgJXMgeycgJSAob2JqZWN0X25hbWUsIGJhc2VfY2xhc3MpKQotICAgICAgICBsaW5lcy5hcHBl
bmQoJ3B1YmxpYzonKQotICAgICAgICBmb3IgZW51bV9tZW1iZXIgaW4gZW51bV9tZW1iZXJzOgot
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgLy8gTmFtZWQgYWZ0ZXIgcHJvcGVydHkgbmFt
ZSBcJyVzXCcgd2hpbGUgZ2VuZXJhdGluZyAlcy4nICUgKGVudW1fbWVtYmVyLm1lbWJlcl9uYW1l
LCBvYmplY3RfbmFtZSkpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVf
c3RydWN0X2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZW51bV9tZW1iZXIpKQotICAgICAgICBs
aW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfYnVpbGRlcl9zdGF0ZV9lbnVtKHR5cGVfZGVjbGFy
YXRpb24pKQotCi0gICAgICAgIGNvbnN0cnVjdG9yX2V4YW1wbGUgPSBbXQotICAgICAgICBjb25z
dHJ1Y3Rvcl9leGFtcGxlLmFwcGVuZCgnICAgICAqIFJlZlB0cjwlcz4gcmVzdWx0ID0gJXM6OmNy
ZWF0ZSgpJyAlIChvYmplY3RfbmFtZSwgb2JqZWN0X25hbWUpKQotICAgICAgICBmb3IgbWVtYmVy
IGluIHJlcXVpcmVkX21lbWJlcnM6Ci0gICAgICAgICAgICBjb25zdHJ1Y3Rvcl9leGFtcGxlLmFw
cGVuZCgnICAgICAqICAgICAuc2V0JXMoLi4uKScgJSB1Y2ZpcnN0KG1lbWJlci5tZW1iZXJfbmFt
ZSkpCi0KLSAgICAgICAgYnVpbGRlcl9hcmdzID0gewotICAgICAgICAgICAgJ29iamVjdFR5cGUn
OiBvYmplY3RfbmFtZSwKLSAgICAgICAgICAgICdjb25zdHJ1Y3RvckV4YW1wbGUnOiAnXG4nLmpv
aW4oY29uc3RydWN0b3JfZXhhbXBsZSkgKyAnOycsCi0gICAgICAgIH0KLQotICAgICAgICBsaW5l
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlR5cGVCdWlsZGVyRGVjbGFyYXRpb25QcmVsdWRl
KS5zdWJzdGl0dXRlKE5vbmUsICoqYnVpbGRlcl9hcmdzKSkKLSAgICAgICAgZm9yIHR5cGVfbWVt
YmVyIGluIHJlcXVpcmVkX21lbWJlcnM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5f
Z2VuZXJhdGVfYnVpbGRlcl9zZXR0ZXJfZm9yX21lbWJlcih0eXBlX21lbWJlciwgZG9tYWluKSkK
LSAgICAgICAgbGluZXMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5UeXBlQnVpbGRlckRlY2xh
cmF0aW9uUG9zdGx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipidWlsZGVyX2FyZ3MpKQotICAgICAg
ICBmb3IgbWVtYmVyIGluIG9wdGlvbmFsX21lbWJlcnM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBl
bmQoc2VsZi5fZ2VuZXJhdGVfdW5jaGVja2VkX3NldHRlcl9mb3JfbWVtYmVyKG1lbWJlciwgZG9t
YWluKSkKLQotICAgICAgICBpZiBHZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVsZHModHlwZV9k
ZWNsYXJhdGlvbi50eXBlKToKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgIC8vIFByb3BlcnR5IG5hbWVzIGZvciB0eXBlIGdlbmVyYXRl
ZCBhcyBvcGVuLicpCi0gICAgICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gdHlwZV9kZWNsYXJh
dGlvbi50eXBlX21lbWJlcnM6Ci0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc3Rh
dGljIGNvbnN0IGNoYXIqICVzOycgJSB1Y2ZpcnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lKSkK
LQotICAgICAgICBsaW5lcy5hcHBlbmQoJ307JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcnKQot
ICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9zdHJ1
Y3RfZm9yX2VudW1fZGVjbGFyYXRpb24oc2VsZiwgZW51bV9kZWNsYXJhdGlvbik6Ci0gICAgICAg
IGxpbmVzID0gW10KLSAgICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBlbnVtX2RlY2xh
cmF0aW9uLmRlc2NyaXB0aW9uKQotICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5fZ2VuZXJhdGVf
c3RydWN0X2Zvcl9lbnVtX3R5cGUoZW51bV9kZWNsYXJhdGlvbi50eXBlX25hbWUsIGVudW1fZGVj
bGFyYXRpb24udHlwZSkpCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCi0KLSAgICBk
ZWYgX2dlbmVyYXRlX3N0cnVjdF9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKHNlbGYsIGVudW1f
bWVtYmVyKToKLSAgICAgICAgZGVmIGFwcGx5X2luZGVudGF0aW9uKGxpbmUpOgotICAgICAgICAg
ICAgaWYgbGluZS5zdGFydHN3aXRoKCgnIycsICcvKicsICcqLycsICcvLycpKSBvciBsZW4obGlu
ZSkgaXMgMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gJyAgICAnICsgbGluZQotCi0gICAgICAgIGluZGVudGVk
X2xpbmVzID0gbWFwKGFwcGx5X2luZGVudGF0aW9uLCBzZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9y
X2VudW1fdHlwZShlbnVtX21lbWJlci5tZW1iZXJfbmFtZSwgZW51bV9tZW1iZXIudHlwZSkpCi0g
ICAgICAgIHJldHVybiAnXG4nLmpvaW4oaW5kZW50ZWRfbGluZXMpCi0KLSAgICBkZWYgX2dlbmVy
YXRlX3N0cnVjdF9mb3JfZW51bV90eXBlKHNlbGYsIGVudW1fbmFtZSwgZW51bV90eXBlKToKLSAg
ICAgICAgbGluZXMgPSBbXQotICAgICAgICBlbnVtX25hbWUgPSB1Y2ZpcnN0KGVudW1fbmFtZSkK
LSAgICAgICAgbGluZXMuYXBwZW5kKCdlbnVtIGNsYXNzICVzIHsnICUgZW51bV9uYW1lKQotICAg
ICAgICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3R5cGUuZW51bV92YWx1ZXMoKToKLSAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgICVzID0gJXMsJyAlIChHZW5lcmF0b3Iuc3R5bGl6ZWRfbmFt
ZV9mb3JfZW51bV92YWx1ZShlbnVtX3ZhbHVlKSwgc2VsZi5lbmNvZGluZ19mb3JfZW51bV92YWx1
ZShlbnVtX3ZhbHVlKSkpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfTsgLy8gZW51bSBjbGFzcyAl
cycgJSBlbnVtX25hbWUpCi0gICAgICAgIHJldHVybiBsaW5lcyAgIyBUaGUgY2FsbGVyIG1heSB3
YW50IHRvIGFkanVzdCBpbmRlbnRhdGlvbiwgc28gZG9uJ3Qgam9pbiB0aGVzZSBsaW5lcy4KLQot
ICAgIGRlZiBfZ2VuZXJhdGVfYnVpbGRlcl9zdGF0ZV9lbnVtKHNlbGYsIHR5cGVfZGVjbGFyYXRp
b24pOgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0
ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwgdHlwZV9kZWNsYXJhdGlv
bi50eXBlX21lbWJlcnMpCi0gICAgICAgIGVudW1fdmFsdWVzID0gW10KLQotICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBlbnVtIHsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgTm9G
aWVsZHNTZXQgPSAwLCcpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihyZXF1aXJlZF9tZW1i
ZXJzKSk6Ci0gICAgICAgICAgICBlbnVtX3ZhbHVlID0gIiVzU2V0IiAlIHVjZmlyc3QocmVxdWly
ZWRfbWVtYmVyc1tpXS5tZW1iZXJfbmFtZSkKLSAgICAgICAgICAgIGVudW1fdmFsdWVzLmFwcGVu
ZChlbnVtX3ZhbHVlKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICVzID0gMSA8
PCAlZCwnICUgKGVudW1fdmFsdWUsIGkpKQotICAgICAgICBpZiBsZW4oZW51bV92YWx1ZXMpID4g
MDoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBBbGxGaWVsZHNTZXQgPSAoJXMp
JyAlICcgfCAnLmpvaW4oZW51bV92YWx1ZXMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgICAgIEFsbEZpZWxkc1NldCA9IDAnKQotICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICB9OycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgcmV0dXJu
ICdcbicuam9pbihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVfYnVpbGRlcl9zZXR0ZXJfZm9y
X21lbWJlcihzZWxmLCB0eXBlX21lbWJlciwgZG9tYWluKToKLSAgICAgICAgc2V0dGVyX2FyZ3Mg
PSB7Ci0gICAgICAgICAgICAnY2FtZWxOYW1lJzogdWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJf
bmFtZSksCi0gICAgICAgICAgICAnZnJhbWV3b3JrUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1l
d29yay5zZXR0aW5nKCdwcmVmaXgnKSwKLSAgICAgICAgICAgICdrZXllZFNldCc6IEdlbmVyYXRv
ci5rZXllZF9zZXRfbWV0aG9kX2Zvcl90eXBlKHR5cGVfbWVtYmVyLnR5cGUpLAotICAgICAgICAg
ICAgJ25hbWUnOiB0eXBlX21lbWJlci5tZW1iZXJfbmFtZSwKLSAgICAgICAgICAgICdwYXJhbWV0
ZXJUeXBlJzogR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJl
cikKLSAgICAgICAgfQotCi0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgbGluZXMuYXBwZW5k
KCcnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgQnVpbGRlcjxTVEFURSB8ICUoY2Ft
ZWxOYW1lKXNTZXQ+JiBzZXQlKGNhbWVsTmFtZSlzKCUocGFyYW1ldGVyVHlwZSlzIHZhbHVlKScg
JSBzZXR0ZXJfYXJncykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHsnKQotICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiAlKGNh
bWVsTmFtZSlzU2V0KSwgcHJvcGVydHlfJShuYW1lKXNfYWxyZWFkeV9zZXQpOycgJSBzZXR0ZXJf
YXJncykKLQotICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5cGUsIEVudW1UeXBl
KToKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgbV9yZXN1bHQtPiUoa2V5
ZWRTZXQpcyhBU0NJSUxpdGVyYWwoIiUobmFtZSlzIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OmdldCUoZnJhbWV3b3JrUHJlZml4KXNFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+
KHZhbHVlKSkpOycgJSBzZXR0ZXJfYXJncykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgICAgICAgICAgbV9yZXN1bHQtPiUoa2V5ZWRTZXQpcyhBU0NJSUxpdGVy
YWwoIiUobmFtZSlzIiksIHZhbHVlKTsnICUgc2V0dGVyX2FyZ3MpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTwlKGNhbWVsTmFtZSlzU2V0PigpOycg
JSBzZXR0ZXJfYXJncykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIH0nKQotICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV91bmNoZWNrZWRf
c2V0dGVyX2Zvcl9tZW1iZXIoc2VsZiwgdHlwZV9tZW1iZXIsIGRvbWFpbik6Ci0gICAgICAgIHNl
dHRlcl9hcmdzID0gewotICAgICAgICAgICAgJ2NhbWVsTmFtZSc6IHVjZmlyc3QodHlwZV9tZW1i
ZXIubWVtYmVyX25hbWUpLAotICAgICAgICAgICAgJ2ZyYW1ld29ya1ByZWZpeCc6IHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4JyksCi0gICAgICAgICAgICAna2V5ZWRTZXQn
OiBHZW5lcmF0b3Iua2V5ZWRfc2V0X21ldGhvZF9mb3JfdHlwZSh0eXBlX21lbWJlci50eXBlKSwK
LSAgICAgICAgICAgICduYW1lJzogdHlwZV9tZW1iZXIubWVtYmVyX25hbWUsCi0gICAgICAgICAg
ICAncGFyYW1ldGVyVHlwZSc6IEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3JfdHlwZV9tZW1iZXIo
dHlwZV9tZW1iZXIpCi0gICAgICAgIH0KLQotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxp
bmVzLmFwcGVuZCgnJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgdm9pZCBzZXQlKGNhbWVs
TmFtZSlzKCUocGFyYW1ldGVyVHlwZSlzIHZhbHVlKScgJSBzZXR0ZXJfYXJncykKLSAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgeycpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9tZW1iZXIu
dHlwZSwgRW51bVR5cGUpOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIEluc3Bl
Y3Rvck9iamVjdEJhc2U6OiUoa2V5ZWRTZXQpcyhBU0NJSUxpdGVyYWwoIiUobmFtZSlzIiksIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldCUoZnJhbWV3b3JrUHJlZml4KXNFbnVtQ29uc3RhbnRW
YWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkpOycgJSBzZXR0ZXJfYXJncykKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBJbnNwZWN0b3JPYmplY3RC
YXNlOjolKGtleWVkU2V0KXMoQVNDSUlMaXRlcmFsKCIlKG5hbWUpcyIpLCB2YWx1ZSk7JyAlIHNl
dHRlcl9hcmdzKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKLSAgICAgICAgcmV0dXJu
ICdcbicuam9pbihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlv
bnNfZm9yX2JpbmRpbmdfdHJhaXRzKHNlbGYpOgotICAgICAgICAjIEEgbGlzdCBvZiAoYnVpbGRl
cl90eXBlLCBuZWVkc19ydW50aW1lX2Nhc3QpCi0gICAgICAgIHR5cGVfYXJndW1lbnRzID0gW10K
LQotICAgICAgICBmb3IgZG9tYWluIGluIHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpOgotICAg
ICAgICAgICAgZGVjbGFyYXRpb25zX3RvX2dlbmVyYXRlID0gZmlsdGVyKGxhbWJkYSBkZWNsOiBz
ZWxmLnR5cGVfbmVlZHNfc2hhcGVfYXNzZXJ0aW9ucyhkZWNsLnR5cGUpLCBkb21haW4udHlwZV9k
ZWNsYXJhdGlvbnMpCi0KLSAgICAgICAgICAgIGZvciB0eXBlX2RlY2xhcmF0aW9uIGluIGRlY2xh
cmF0aW9uc190b19nZW5lcmF0ZToKLSAgICAgICAgICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4g
dHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UodHlwZV9tZW1iZXIudHlwZSwgRW51bVR5cGUpOgotICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZV9hcmd1bWVudHMuYXBwZW5kKChHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmlu
Z19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIHR5cGVfZGVjbGFyYXRpb24pLCBGYWxzZSkp
Ci0KLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfZGVjbGFyYXRpb24udHlwZSwg
T2JqZWN0VHlwZSk6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfYXJndW1lbnRzLmFwcGVuZCgo
R2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUodHlwZV9kZWNsYXJhdGlvbi50
eXBlKSwgR2VuZXJhdG9yLnR5cGVfbmVlZHNfcnVudGltZV9jYXN0cyh0eXBlX2RlY2xhcmF0aW9u
LnR5cGUpKSkKLQotICAgICAgICBzdHJ1Y3Rfa2V5d29yZHMgPSBbJ3N0cnVjdCddCi0gICAgICAg
IGZ1bmN0aW9uX2tleXdvcmRzID0gWydzdGF0aWMgdm9pZCddCi0gICAgICAgIGV4cG9ydF9tYWNy
byA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnZXhwb3J0X21hY3JvJywgTm9uZSkK
LSAgICAgICAgaWYgZXhwb3J0X21hY3JvIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc3RydWN0
X2tleXdvcmRzLmFwcGVuZChleHBvcnRfbWFjcm8pCi0gICAgICAgICAgICAjZnVuY3Rpb25fa2V5
d29yZHNbMToxXSA9IFtleHBvcnRfbWFjcm9dCi0KLSAgICAgICAgbGluZXMgPSBbXQotICAgICAg
ICBmb3IgYXJndW1lbnQgaW4gdHlwZV9hcmd1bWVudHM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJ3RlbXBsYXRlPD4gJXMgQmluZGluZ1RyYWl0czwlcz4geycgJSAoJyAnLmpvaW4oc3RydWN0
X2tleXdvcmRzKSwgYXJndW1lbnRbMF0pKQotICAgICAgICAgICAgaWYgYXJndW1lbnRbMV06Ci0g
ICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdzdGF0aWMgUGFzc1JlZlB0cjwlcz4gcnVudGlt
ZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSk7JyAlIGFy
Z3VtZW50WzBdKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxF
RCcpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyVzIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRU
eXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqKTsnICUgJyAnLmpvaW4oZnVuY3Rpb25fa2V5
d29yZHMpKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNB
QkxFRCcpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ307JykKLSAgICAgICAgcmV0dXJuICdc
bicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY5MmFhOGFiOTNjMTExNmQwOGQxZDhmYjJlZWE4ZmJlMzBiNDEwMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1w
bGVtZW50YXRpb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoYykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0jIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3RyaW5nCi1mcm9tIHN0cmluZyBp
bXBvcnQgVGVtcGxhdGUKLQotZnJvbSBnZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvciwgdWNmaXJz
dAotZnJvbSBnZW5lcmF0b3JfdGVtcGxhdGVzIGltcG9ydCBHZW5lcmF0b3JUZW1wbGF0ZXMgYXMg
VGVtcGxhdGVzCi1mcm9tIG1vZGVscyBpbXBvcnQgQWxpYXNlZFR5cGUsIEFycmF5VHlwZSwgRW51
bVR5cGUsIE9iamVjdFR5cGUKLQotbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCi0K
LQotY2xhc3MgVHlwZUJ1aWxkZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpOgotICAgICAgICBH
ZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKQotCi0gICAgZGVm
IG91dHB1dF9maWxlbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICJJbnNwZWN0b3Ilc1R5cGVC
dWlsZGVycy5jcHAiICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKQot
Ci0gICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKLSAgICAgICAgZG9tYWlucyA9IHNlbGYu
ZG9tYWluc190b19nZW5lcmF0ZSgpCi0gICAgICAgIHNlbGYuY2FsY3VsYXRlX3R5cGVzX3JlcXVp
cmluZ19zaGFwZV9hc3NlcnRpb25zKGRvbWFpbnMpCi0KLSAgICAgICAgc2Vjb25kYXJ5X2hlYWRl
cnMgPSBbJzx3dGYvdGV4dC9DU3RyaW5nLmg+J10KLQotICAgICAgICBoZWFkZXJfYXJncyA9IHsK
LSAgICAgICAgICAgICdwcmltYXJ5SW5jbHVkZSc6ICciSW5zcGVjdG9yJXNUeXBlQnVpbGRlcnMu
aCInICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKLSAgICAgICAg
ICAgICdzZWNvbmRhcnlJbmNsdWRlcyc6ICJcbiIuam9pbihbJyNpbmNsdWRlICVzJyAlIGhlYWRl
ciBmb3IgaGVhZGVyIGluIHNlY29uZGFyeV9oZWFkZXJzXSksCi0gICAgICAgICAgICAnaW5wdXRG
aWxlbmFtZSc6IHNlbGYuX2lucHV0X2ZpbGVwYXRoCi0gICAgICAgIH0KLQotICAgICAgICBzZWN0
aW9ucyA9IFtdCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2Uo
KSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBJbXBsZW1l
bnRhdGlvblByZWx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCi0gICAgICAg
IHNlY3Rpb25zLmFwcGVuZCgnbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsnKQotICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfZW51bV9tYXBwaW5nKCkpCi0gICAgICAgIHNlY3Rp
b25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9vcGVuX2ZpZWxkX25hbWVzKCkpCi0gICAgICAgIGJ1
aWxkZXJfc2VjdGlvbnMgPSBtYXAoc2VsZi5fZ2VuZXJhdGVfYnVpbGRlcnNfZm9yX2RvbWFpbiwg
ZG9tYWlucykKLSAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKGZpbHRlcihsYW1iZGEgc2VjdGlvbjog
bGVuKHNlY3Rpb24pID4gMCwgYnVpbGRlcl9zZWN0aW9ucykpCi0gICAgICAgIHNlY3Rpb25zLmFw
cGVuZCgnfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXInKQotICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNwcEltcGxlbWVudGF0aW9uUG9zdGx1ZGUpLnN1YnN0aXR1
dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCi0KLSAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNl
Y3Rpb25zKQotCi0gICAgIyBQcml2YXRlIG1ldGhvZHMuCi0KLSAgICBkZWYgX2dlbmVyYXRlX2Vu
dW1fbWFwcGluZyhzZWxmKToKLSAgICAgICAgZnJhbWV3b3JrX3ByZWZpeCA9IHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4JykKLSAgICAgICAgbGluZXMgPSBbXQotCi0gICAg
ICAgIGxpbmVzLmFwcGVuZCgnc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRf
dmFsdWVzW10gPSB7JykKLSAgICAgICAgbGluZXMuZXh0ZW5kKFsnICAgICIlcyIsJyAlIGVudW1f
dmFsdWUgZm9yIGVudW1fdmFsdWUgaW4gc2VsZi5hc3NpZ25lZF9lbnVtX3ZhbHVlcygpXSkKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCd9OycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAg
ICAgbGluZXMuYXBwZW5kKCdTdHJpbmcgZ2V0JXNFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkg
eycgJSBmcmFtZXdvcmtfcHJlZml4KQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4g
ZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9JykK
LQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9v
cGVuX2ZpZWxkX25hbWVzKHNlbGYpOgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGZvciBk
b21haW4gaW4gc2VsZi5kb21haW5zX3RvX2dlbmVyYXRlKCk6Ci0gICAgICAgICAgICBmb3IgdHlw
ZV9kZWNsYXJhdGlvbiBpbiBmaWx0ZXIobGFtYmRhIGRlY2w6IEdlbmVyYXRvci50eXBlX2hhc19v
cGVuX2ZpZWxkcyhkZWNsLnR5cGUpLCBkb21haW4udHlwZV9kZWNsYXJhdGlvbnMpOgotICAgICAg
ICAgICAgICAgIGZvciB0eXBlX21lbWJlciBpbiBzb3J0ZWQodHlwZV9kZWNsYXJhdGlvbi50eXBl
X21lbWJlcnMsIGtleT1sYW1iZGEgbWVtYmVyOiBtZW1iZXIubWVtYmVyX25hbWUpOgotICAgICAg
ICAgICAgICAgICAgICBmaWVsZF9uYW1lID0gJzo6Jy5qb2luKFsnSW5zcGVjdG9yJywgJ1R5cGVC
dWlsZGVyJywgZG9tYWluLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHR5cGVfZGVjbGFyYXRpb24udHlw
ZV9uYW1lKSwgdWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJfbmFtZSldKQotICAgICAgICAgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJ2NvbnN0IGNoYXIqICVzID0gIiVzIjsnICUgKGZpZWxkX25h
bWUsIHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lKSkKLQotICAgICAgICByZXR1cm4gJ1xuJy5qb2lu
KGxpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9idWlsZGVyc19mb3JfZG9tYWluKHNlbGYsIGRv
bWFpbik6Ci0gICAgICAgIHNlY3Rpb25zID0gW10KLSAgICAgICAgZGVjbGFyYXRpb25zX3RvX2dl
bmVyYXRlID0gZmlsdGVyKGxhbWJkYSBkZWNsOiBzZWxmLnR5cGVfbmVlZHNfc2hhcGVfYXNzZXJ0
aW9ucyhkZWNsLnR5cGUpLCBkb21haW4udHlwZV9kZWNsYXJhdGlvbnMpCi0KLSAgICAgICAgZm9y
IHR5cGVfZGVjbGFyYXRpb24gaW4gZGVjbGFyYXRpb25zX3RvX2dlbmVyYXRlOgotICAgICAgICAg
ICAgZm9yIHR5cGVfbWVtYmVyIGluIHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzOgotICAg
ICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9tZW1iZXIudHlwZSwgRW51bVR5cGUpOgot
ICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfYXNzZXJ0
aW9uX2Zvcl9lbnVtKHR5cGVfbWVtYmVyLCB0eXBlX2RlY2xhcmF0aW9uKSkKLQotICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZSh0eXBlX2RlY2xhcmF0aW9uLnR5cGUsIE9iamVjdFR5cGUpOgotICAg
ICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9hc3NlcnRpb25fZm9y
X29iamVjdF9kZWNsYXJhdGlvbih0eXBlX2RlY2xhcmF0aW9uKSkKLSAgICAgICAgICAgICAgICBp
ZiBHZW5lcmF0b3IudHlwZV9uZWVkc19ydW50aW1lX2Nhc3RzKHR5cGVfZGVjbGFyYXRpb24udHlw
ZSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9y
dW50aW1lX2Nhc3RfZm9yX29iamVjdF9kZWNsYXJhdGlvbih0eXBlX2RlY2xhcmF0aW9uKSkKLQot
ICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4oc2VjdGlvbnMpCi0KLSAgICBkZWYgX2dlbmVyYXRl
X3J1bnRpbWVfY2FzdF9mb3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHNlbGYsIG9iamVjdF9kZWNsYXJh
dGlvbik6Ci0gICAgICAgIGFyZ3MgPSB7Ci0gICAgICAgICAgICAnb2JqZWN0VHlwZSc6IEdlbmVy
YXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKG9iamVjdF9kZWNsYXJhdGlvbi50eXBl
KQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBUZW1wbGF0ZShUZW1wbGF0ZXMuVHlwZUJ1aWxk
ZXJPYmplY3RSdW50aW1lQ2FzdCkuc3Vic3RpdHV0ZShOb25lLCAqKmFyZ3MpCi0KLSAgICBkZWYg
X2dlbmVyYXRlX2Fzc2VydGlvbl9mb3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHNlbGYsIG9iamVjdF9k
ZWNsYXJhdGlvbik6Ci0gICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1l
bWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwgb2JqZWN0X2RlY2xhcmF0aW9uLnR5cGVfbWVt
YmVycykKLSAgICAgICAgb3B0aW9uYWxfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBt
ZW1iZXIuaXNfb3B0aW9uYWwsIG9iamVjdF9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCi0gICAg
ICAgIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzID0gbm90IEdlbmVyYXRvci50eXBlX2hhc19vcGVu
X2ZpZWxkcyhvYmplY3RfZGVjbGFyYXRpb24udHlwZSkKLSAgICAgICAgbGluZXMgPSBbXQotCi0g
ICAgICAgIGxpbmVzLmFwcGVuZCgnI2lmICFBU1NFUlRfRElTQUJMRUQnKQotICAgICAgICBsaW5l
cy5hcHBlbmQoJ3ZvaWQgQmluZGluZ1RyYWl0czwlcz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRU
eXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKScgJSAoR2VuZXJhdG9yLnR5cGVf
YnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUpKSkKLSAgICAg
ICAgbGluZXMuYXBwZW5kKCIiInsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7
Ci0gICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwotICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7IiIiKQotICAgICAgICBmb3IgdHlwZV9tZW1iZXIg
aW4gcmVxdWlyZWRfbWVtYmVyczoKLSAgICAgICAgICAgIGFyZ3MgPSB7Ci0gICAgICAgICAgICAg
ICAgJ21lbWJlck5hbWUnOiB0eXBlX21lbWJlci5tZW1iZXJfbmFtZSwKLSAgICAgICAgICAgICAg
ICAnYXNzZXJ0TWV0aG9kJzogR2VuZXJhdG9yLmFzc2VydGlvbl9tZXRob2RfZm9yX3R5cGVfbWVt
YmVyKHR5cGVfbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pCi0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiIgICAgewotICAgICAgICBJbnNwZWN0b3JPYmplY3Q6
Oml0ZXJhdG9yICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgi
JShtZW1iZXJOYW1lKXMiKSk7Ci0gICAgICAgIEFTU0VSVCglKG1lbWJlck5hbWUpc1BvcyAhPSBv
YmplY3QtPmVuZCgpKTsKLSAgICAgICAgJShhc3NlcnRNZXRob2QpcyglKG1lbWJlck5hbWUpc1Bv
cy0+dmFsdWUuZ2V0KCkpOwotICAgIH0iIiIgJSBhcmdzKQotCi0gICAgICAgIGlmIHNob3VsZF9j
b3VudF9wcm9wZXJ0aWVzOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQotICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgaW50IGZvdW5kUHJvcGVydGllc0NvdW50ID0gJXM7JyAlIGxl
bihyZXF1aXJlZF9tZW1iZXJzKSkKLQotICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gb3B0aW9u
YWxfbWVtYmVyczoKLSAgICAgICAgICAgIGFyZ3MgPSB7Ci0gICAgICAgICAgICAgICAgJ21lbWJl
ck5hbWUnOiB0eXBlX21lbWJlci5tZW1iZXJfbmFtZSwKLSAgICAgICAgICAgICAgICAnYXNzZXJ0
TWV0aG9kJzogR2VuZXJhdG9yLmFzc2VydGlvbl9tZXRob2RfZm9yX3R5cGVfbWVtYmVyKHR5cGVf
bWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgiIiIgICAgewotICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9y
ICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgiJShtZW1iZXJO
YW1lKXMiKSk7Ci0gICAgICAgIGlmICglKG1lbWJlck5hbWUpc1BvcyAhPSBvYmplY3QtPmVuZCgp
KSB7Ci0gICAgICAgICAgICAlKGFzc2VydE1ldGhvZClzKCUobWVtYmVyTmFtZSlzUG9zLT52YWx1
ZS5nZXQoKSk7IiIiICUgYXJncykKLQotICAgICAgICAgICAgaWYgc2hvdWxkX2NvdW50X3Byb3Bl
cnRpZXM6Ci0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICArK2ZvdW5k
UHJvcGVydGllc0NvdW50OycpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgfScp
Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKLQotICAgICAgICBpZiBzaG91bGRf
Y291bnRfcHJvcGVydGllczoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmIChmb3Vu
ZFByb3BlcnRpZXNDb3VudCAhPSBvYmplY3QtPnNpemUoKSknKQotICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0OiAl
c1xcbiIsIG9iamVjdC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOycpCi0gICAgICAg
IGxpbmVzLmFwcGVuZCgnfScpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFBU1NF
UlRfRElTQUJMRUQnKQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gICAgZGVm
IF9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX2VudW0oc2VsZiwgZW51bV9tZW1iZXIsIG9iamVjdF9k
ZWNsYXJhdGlvbik6Ci0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgbGluZXMuYXBwZW5kKCcj
aWYgIUFTU0VSVF9ESVNBQkxFRCcpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgndm9pZCAlcyhJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSknICUgR2VuZXJhdG9yLmFzc2VydGlvbl9tZXRo
b2RfZm9yX3R5cGVfbWVtYmVyKGVudW1fbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pKQotICAg
ICAgICBsaW5lcy5hcHBlbmQoJ3snKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBTdHJpbmcg
czsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBib29sIGNhc3RfcmVzID0gdmFsdWUtPmFz
U3RyaW5nKCZzKTsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBBU1NFUlQoY2FzdF9yZXMp
OycpCi0KLSAgICAgICAgYXNzZXJ0X2NvbmRpdGlvbiA9ICcgfHwgJy5qb2luKFsncyA9PSAiJXMi
JyAlIGVudW1fdmFsdWUgZm9yIGVudW1fdmFsdWUgaW4gZW51bV9tZW1iZXIudHlwZS5lbnVtX3Zh
bHVlcygpXSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQVNTRVJUKCVzKTsnICUgYXNzZXJ0
X2NvbmRpdGlvbikKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKLSAgICAgICAgbGluZXMuYXBw
ZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCi0KLSAgICAgICAgcmV0dXJuICdcbicu
am9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQppbmRleCBjNjNlZmFiNDlmM2JmYTcy
ZTdkMjNlNGExNWQ0NmMzMDFjNGMwZWFhLi5lYWFhMzM3ZjA4MmM3YzM3ZTBlZTE0YzlkYWY3N2Fh
NmI5YmU4NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CkBAIC0yNjcsMjIgKzI2NywyMiBA
QCBjbGFzcyBHZW5lcmF0b3I6CiAKICAgICAjIEdlbmVyYXRlIHR5cGUgcmVwcmVzZW50YXRpb25z
IGZvciB2YXJpb3VzIHNpdHVhdGlvbnMuCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiB0eXBl
X2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlKToKKyAgICBkZWYgcHJvdG9jb2xfdHlwZV9z
dHJpbmdfZm9yX3R5cGUoX3R5cGUpOgogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBPYmpl
Y3RUeXBlKSBhbmQgbGVuKF90eXBlLm1lbWJlcnMpID09IDA6CiAgICAgICAgICAgICByZXR1cm4g
J0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JwogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBl
LCAoT2JqZWN0VHlwZSwgQWxpYXNlZFR5cGUsIEVudW1UeXBlKSk6Ci0gICAgICAgICAgICByZXR1
cm4gJ0luc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OiVzOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4o
KS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKKyAgICAgICAgICAgIHJldHVybiAnSW5z
cGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9u
YW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBBcnJh
eVR5cGUpOgotICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTwlcz4nICUgR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUoX3R5cGUuZWxl
bWVudF90eXBlKQorICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTwlcz4nICUgR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlKF90eXBlLmVs
ZW1lbnRfdHlwZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6
CiAgICAgICAgICAgICByZXR1cm4gR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlw
ZShfdHlwZSkKIAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdHlwZV9idWlsZGVyX3N0cmlu
Z19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbik6CisgICAg
ZGVmIHByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlciwgb2Jq
ZWN0X2RlY2xhcmF0aW9uKToKICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX21lbWJlci50eXBl
LCBFbnVtVHlwZSkgYW5kIHR5cGVfbWVtYmVyLnR5cGUuaXNfYW5vbnltb3VzOgotICAgICAgICAg
ICAgcmV0dXJuICc6Oicuam9pbihbR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5
cGUob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUpLCB1Y2ZpcnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9u
YW1lKV0pCisgICAgICAgICAgICByZXR1cm4gJzo6Jy5qb2luKFtHZW5lcmF0b3IucHJvdG9jb2xf
dHlwZV9zdHJpbmdfZm9yX3R5cGUob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUpLCB1Y2ZpcnN0KHR5
cGVfbWVtYmVyLm1lbWJlcl9uYW1lKV0pCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1
cm4gR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUodHlwZV9tZW1iZXIudHlw
ZSkKKyAgICAgICAgICAgIHJldHVybiBHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9y
X3R5cGUodHlwZV9tZW1iZXIudHlwZSkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgdHlw
ZV9zdHJpbmdfZm9yX3VuY2hlY2tlZF9mb3JtYWxfaW5fcGFyYW1ldGVyKHBhcmFtZXRlcik6CkBA
IC0zMjEsOSArMzIxLDkgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIEBzdGF0aWNtZXRob2QKICAg
ICBkZWYgdHlwZV9zdHJpbmdfZm9yX3R5cGVfd2l0aF9uYW1lKF90eXBlLCB0eXBlX25hbWUsIGlz
X29wdGlvbmFsKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKEFycmF5VHlwZSwgT2Jq
ZWN0VHlwZSkpOgotICAgICAgICAgICAgcmV0dXJuICdQYXNzUmVmUHRyPCVzPicgJSBHZW5lcmF0
b3IudHlwZV9idWlsZGVyX3N0cmluZ19mb3JfdHlwZShfdHlwZSkKKyAgICAgICAgICAgIHJldHVy
biAnUGFzc1JlZlB0cjwlcz4nICUgR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90
eXBlKF90eXBlKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBBbGlhc2VkVHlwZSk6Ci0g
ICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19m
b3JfdHlwZShfdHlwZSkKKyAgICAgICAgICAgIGJ1aWxkZXJfdHlwZSA9IEdlbmVyYXRvci5wcm90
b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIGlzX29wdGlv
bmFsOgogICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqIGNvbnN0JyAlIGJ1aWxkZXJf
dHlwZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5hbGlhc2VkX3R5cGUucXVhbGlmaWVkX25hbWUo
KSBpbiBbJ2ludGVnZXInLCAnbnVtYmVyJ106CkBAIC0zNDgsNyArMzQ4LDcgQEAgY2xhc3MgR2Vu
ZXJhdG9yOgogICAgICAgICAgICAgaWYgX3R5cGUuaXNfYW5vbnltb3VzOgogICAgICAgICAgICAg
ICAgIGVudW1fdHlwZV9uYW1lID0gdWNmaXJzdCh0eXBlX25hbWUpCiAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIGVudW1fdHlwZV9uYW1lID0gJ0luc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OiVzOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3
X25hbWUoKSkKKyAgICAgICAgICAgICAgICBlbnVtX3R5cGVfbmFtZSA9ICdJbnNwZWN0b3I6OlBy
b3RvY29sOjolczo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIF90eXBl
LnJhd19uYW1lKCkpCiAKICAgICAgICAgICAgIGlmIGlzX29wdGlvbmFsOgogICAgICAgICAgICAg
ICAgIHJldHVybiAnJXMqJyAlIGVudW1fdHlwZV9uYW1lCkBAIC0zNjMsMTggKzM2MywxOCBAQCBj
bGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBfdHlwZSA9IF90eXBlLmFsaWFzZWRfdHlwZSAg
IyBGYWxsIHRocm91Z2guCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9iamVjdFR5
cGUsIEFycmF5VHlwZSkpOgotICAgICAgICAgICAgcmV0dXJuICdSZWZQdHI8JXM+JicgJSBHZW5l
cmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19mb3JfdHlwZShfdHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiAnUmVmUHRyPCVzPiYnICUgR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90
eXBlKF90eXBlKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToK
ICAgICAgICAgICAgIGNwcF9uYW1lID0gR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVf
dHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDwlcz4q
IiAlIGNwcF9uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBfbmFtZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICByZXR1cm4gJyVzKicgJSBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90
eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5pc19hbm9ueW1vdXM6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
JXMqJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRl
ci5wYXJhbWV0ZXJfbmFtZSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJl
dHVybiAnSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6JXM6OiVzKicgJSAoX3R5cGUudHlwZV9kb21h
aW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjolcyonICUgKF90eXBlLnR5cGVfZG9tYWluKCku
ZG9tYWluX25hbWUsIF90eXBlLnJhd19uYW1lKCkpCiAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigidW5rbm93biBmb3JtYWwgb3V0IHBhcmFtZXRlciB0eXBlLiIpCiAKQEAgLTM4OSwxMSArMzg5
LDExIEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIF90eXBlID0gX3R5cGUucHJpbWl0
aXZlX3R5cGUgICMgRmFsbCB0aHJvdWdoLgogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUs
IChPYmplY3RUeXBlLCBBcnJheVR5cGUpKToKLSAgICAgICAgICAgIHJldHVybiAnUGFzc1JlZlB0
cjwlcz4nICUgR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpCisg
ICAgICAgICAgICByZXR1cm4gJ1Bhc3NSZWZQdHI8JXM+JyAlIEdlbmVyYXRvci5wcm90b2NvbF90
eXBlX3N0cmluZ19mb3JfdHlwZShfdHlwZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwg
UHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAgICBjcHBfbmFtZSA9IEdlbmVyYXRvci5jcHBfbmFt
ZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNf
b3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBfbmFtZQorICAgICAgICAgICAgICAgIHJldHVybiAiSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPioiICUgY3BwX25hbWUKICAgICAgICAgICAg
IGVsaWYgX3R5cGUucXVhbGlmaWVkX25hbWUoKSBpbiBbJ2ludGVnZXInLCAnbnVtYmVyJ106CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5
cGUoX3R5cGUpCiAgICAgICAgICAgICBlbGlmIF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4gWydz
dHJpbmcnXToKQEAgLTQyNSw3ICs0MjUsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAg
ICBpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnYW55JywgJ29iamVjdCddOgogICAgICAg
ICAgICAgICAgIHJldHVybiAiUmVmUHRyPCVzPiIgJSBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3By
aW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgZWxpZiBwYXJhbWV0ZXIuaXNfb3B0aW9u
YWwgYW5kIF90eXBlLnF1YWxpZmllZF9uYW1lKCkgbm90IGluIFsnYm9vbGVhbicsICdzdHJpbmcn
LCAnaW50ZWdlciddOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PCVzPiIgJSBjcHBfbmFtZQorICAgICAgICAgICAgICAgIHJldHVybiAi
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPiIgJSBjcHBfbmFtZQogICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gY3BwX25hbWUKIApAQCAtNDMzLDM0ICs0
MzMsMzQgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGRlZiB0eXBlX3N0cmluZ19mb3Jfc3RhY2tf
b3V0X3BhcmFtZXRlcihwYXJhbWV0ZXIpOgogICAgICAgICBfdHlwZSA9IHBhcmFtZXRlci50eXBl
CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIChBcnJheVR5cGUsIE9iamVjdFR5cGUpKToK
LSAgICAgICAgICAgIHJldHVybiAnUmVmUHRyPCVzPicgJSBHZW5lcmF0b3IudHlwZV9idWlsZGVy
X3N0cmluZ19mb3JfdHlwZShfdHlwZSkKKyAgICAgICAgICAgIHJldHVybiAnUmVmUHRyPCVzPicg
JSBHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAg
IGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFsaWFzZWRUeXBlKToKLSAgICAgICAgICAgIGJ1aWxkZXJf
dHlwZSA9IEdlbmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQorICAg
ICAgICAgICAgYnVpbGRlcl90eXBlID0gR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zv
cl90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgotICAg
ICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PCVz
PiIgJSBidWlsZGVyX3R5cGUKKyAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDwlcz4iICUgYnVpbGRlcl90eXBlCiAgICAgICAgICAgICByZXR1cm4g
JyVzJyAlIGJ1aWxkZXJfdHlwZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRp
dmVUeXBlKToKICAgICAgICAgICAgIGNwcF9uYW1lID0gR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9w
cmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25h
bDoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDwlcz4iICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDwlcz4iICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNwcF9uYW1lCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5
cGUsIEVudW1UeXBlKToKICAgICAgICAgICAgIGlmIF90eXBlLmlzX2Fub255bW91czoKICAgICAg
ICAgICAgICAgICByZXR1cm4gJ0luc3BlY3RvciVzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjol
cycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgdWNmaXJzdChwYXJhbWV0ZXIu
cGFyYW1ldGVyX25hbWUpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gJ0luc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OiVzOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4o
KS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
J0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21h
aW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYg
YXNzZXJ0aW9uX21ldGhvZF9mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNs
YXJhdGlvbik6CiAKICAgICAgICAgZGVmIGFzc2VydGlvbl9tZXRob2RfZm9yX3R5cGUoX3R5cGUp
OgotICAgICAgICAgICAgcmV0dXJuICdCaW5kaW5nVHJhaXRzPCVzPjo6YXNzZXJ0VmFsdWVIYXNF
eHBlY3RlZFR5cGUnICUgR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUoX3R5
cGUpCisgICAgICAgICAgICByZXR1cm4gJ0JpbmRpbmdUcmFpdHM8JXM+Ojphc3NlcnRWYWx1ZUhh
c0V4cGVjdGVkVHlwZScgJSBHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGUo
X3R5cGUpCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX21lbWJlci50eXBlLCBBbGlhc2Vk
VHlwZSk6CiAgICAgICAgICAgICByZXR1cm4gYXNzZXJ0aW9uX21ldGhvZF9mb3JfdHlwZSh0eXBl
X21lbWJlci50eXBlLmFsaWFzZWRfdHlwZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX21l
bWJlci50eXBlLCBFbnVtVHlwZSkgYW5kIHR5cGVfbWVtYmVyLnR5cGUuaXNfYW5vbnltb3VzOgot
ICAgICAgICAgICAgcmV0dXJuICdCaW5kaW5nVHJhaXRzPCVzPjo6YXNzZXJ0VmFsdWVIYXNFeHBl
Y3RlZFR5cGUnICUgR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGVfbWVtYmVy
KHR5cGVfbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pCisgICAgICAgICAgICByZXR1cm4gJ0Jp
bmRpbmdUcmFpdHM8JXM+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZScgJSBHZW5lcmF0b3Iu
cHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGVfbWVtYmVyKHR5cGVfbWVtYmVyLCBvYmplY3Rf
ZGVjbGFyYXRpb24pCiAKICAgICAgICAgcmV0dXJuIGFzc2VydGlvbl9tZXRob2RfZm9yX3R5cGUo
dHlwZV9tZW1iZXIudHlwZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0
ZXMucHkKaW5kZXggZjlmMGYzNzUxY2JhOTJlZWRmMzlhMmI2Mzk1M2Y3ZGNiODFkNzA3OC4uNjE0
ODUyNTIyYTNlMTU1MGM3YjA4OGFkNDNhOTQ0OTY4NzY3OTRlMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OwogfTsiIiIpCiAKLSAgICBUeXBlQnVpbGRlckRlY2xhcmF0aW9uUHJlbHVkZSA9ICgKKyAgICBQ
cm90b2NvbE9iamVjdEJ1aWxkZXJEZWNsYXJhdGlvblByZWx1ZGUgPSAoCiAiIiIgICAgdGVtcGxh
dGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6CkBAIC0yMjUs
NyArMjI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzICR7b2JqZWN0VHlwZX07
CiAgICAgcHVibGljOiIiIikKIAotICAgIFR5cGVCdWlsZGVyRGVjbGFyYXRpb25Qb3N0bHVkZSA9
ICgKKyAgICBQcm90b2NvbE9iamVjdEJ1aWxkZXJEZWNsYXJhdGlvblBvc3RsdWRlID0gKAogIiIi
CiAgICAgICAgIG9wZXJhdG9yIFJlZlB0cjwke29iamVjdFR5cGV9PiYgKCkKICAgICAgICAgewpA
QCAtMjQ4LDkgKzI0OCw5IEBAICR7Y29uc3RydWN0b3JFeGFtcGxlfQogICAgIHsKICAgICAgICAg
cmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSk7CiAgICAgfQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3Ry
dWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOyIiIikKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsiIiIpCiAKLSAgICBUeXBlQnVpbGRl
ck9iamVjdFJ1bnRpbWVDYXN0ID0gKAorICAgIFByb3RvY29sT2JqZWN0UnVudGltZUNhc3QgPSAo
CiAiIiJQYXNzUmVmUHRyPCR7b2JqZWN0VHlwZX0+IEJpbmRpbmdUcmFpdHM8JHtvYmplY3RUeXBl
fT46OnJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFs
dWUpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQppbmRleCAyZmQ2ZGZiZTczZGEzZmU0ZjJlMWE0YzNkMWVhYjQ1NWQ4NzhjZTZiLi44MDg5MGJl
NGZjNTU4NTUyNmFlOTAyODkyOTE1NTI2NTUwNGJlMGM0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LWJpbmRpbmdzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKQEAgLTU1LDggKzU1LDgg
QEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZyb20gZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCiAgICAgZnJvbSBnZW5lcmF0ZV9mcm9udGVuZF9k
aXNwYXRjaGVyX2hlYWRlciBpbXBvcnQgKgogICAgIGZyb20gZ2VuZXJhdGVfZnJvbnRlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgotICAgIGZyb20gZ2VuZXJhdGVfdHlwZV9i
dWlsZGVyX2hlYWRlciBpbXBvcnQgKgotICAgIGZyb20gZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2lt
cGxlbWVudGF0aW9uIGltcG9ydCAqCisgICAgZnJvbSBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19o
ZWFkZXIgaW1wb3J0ICoKKyAgICBmcm9tIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVu
dGF0aW9uIGltcG9ydCAqCiAKIAogbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9JyUobGV2ZWxu
YW1lKXM6ICUobWVzc2FnZSlzJywgbGV2ZWw9bG9nZ2luZy5FUlJPUikKQEAgLTEyMyw4ICsxMjMs
OCBAQCBkZWYgZ2VuZXJhdGVfZnJvbV9zcGVjaWZpY2F0aW9uKHByaW1hcnlfc3BlY2lmaWNhdGlv
bl9maWxlcGF0aD1Ob25lLAogICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJhY2tlbmREaXNwYXRjaGVy
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9m
aWxlcGF0aCkpCiAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoRnJvbnRlbmREaXNwYXRjaGVySGVhZGVy
R2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAg
IGdlbmVyYXRvcnMuYXBwZW5kKEZyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQotICAgIGdlbmVy
YXRvcnMuYXBwZW5kKFR5cGVCdWlsZGVySGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5
X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQotICAgIGdlbmVyYXRvcnMuYXBwZW5kKFR5cGVCdWls
ZGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlv
bl9maWxlcGF0aCkpCisgICAgZ2VuZXJhdG9ycy5hcHBlbmQoUHJvdG9jb2xUeXBlc0hlYWRlckdl
bmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKKyAgICBn
ZW5lcmF0b3JzLmFwcGVuZChQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IocHJv
dG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAKICAgICBzaW5nbGVfb3V0
cHV0X2ZpbGVfY29udGVudHMgPSBbXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1h
dHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQKaW5kZXggYTA5NDJjMzdiODZhM2Q0YWFkYTk3ODY5Yzc1ZmE0NDAxMjE4OTY3My4uMzFh
ZjE0MzMxNDY2NDBiYTU1ZWRiN2M1MTg3ZTU3N2Y2Y2IxZmUzYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5j
LWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtNzQsNyArNzQsNyBAQCBJbnNwZWN0b3JCYWNrZW5k
LnJlZ2lzdGVyQ29tbWFuZCgiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5jIiwgW3sibmFtZSI6ICJk
YXRhYmFzZQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5o
IgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC05OSwxOCArOTksMTggQEAgcHVibGljOgogICAgICAgICBZZWxsb3cgPSA1LAogICAgICAg
ICBCbGFjayA9IDYsCiAgICAgfTsgLy8gZW51bSBjbGFzcyBQcmludENvbG9yCi0gICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcqLCBp
bnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1w
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9y
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291
dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nKiwgaW50IGluX2Rh
dGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1
ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50
Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3Ip
ID0gMDsKICAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxi
YWNrIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc0NhbGxiYWNrKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcj4sIGludCBpZCk7Ci0gICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGludD4qIGRh
dGFiYXNlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVy
cm9yPiBzcWxFcnJvciwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4q
IHNjcmVlbkNvbG9yLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiog
cHJpbnRDb2xvcik7CisgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcik7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcqLCBpbnQg
aW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjaykgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhFcnJvclN0cmluZyosIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRv
dWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1
ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRh
YmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiYg
b3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNv
bG9ycyogb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcqLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3Qg
U3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1l
c3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xv
ciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Iq
IG91dF9wcmludENvbG9yKSA9IDA7CiAgICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sg
OiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4sIGludCBpZCk7Ci0g
ICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91Ymxl
IHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmlu
ZyYgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CisgICAgICAgIHZvaWQg
c2VuZFN1Y2Nlc3MoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
IHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIGNv
bnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZVNRTEFzeW5jKEVycm9yU3RyaW5nKiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYg
aW5fcXVlcnksIFBhc3NSZWZQdHI8RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s+IGNhbGxiYWNrKSA9
IDA7CiBwcm90ZWN0ZWQ6CkBAIC0yMzIsMTQgKzIzMiwxNCBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMo
bG9uZwogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwotICAgIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+IG91dF9ub3RlczsKLSAgICBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8ZG91YmxlPiBvdXRfdGltZXN0YW1wOwot
ICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gb3V0X3ZhbHVlczsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNl
OjpEYXRhYmFzZUlkPiBvdXRfZGF0YWJhc2VJZDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7Ci0gICAgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFt
ZXM7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4gb3V0X25vdGVz
OworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+IG91dF90aW1lc3Rh
bXA7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBvdXRfdmFsdWVzOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBvdXRfcGF5bG9hZDsKKyAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkRhdGFi
YXNlSWQ+IG91dF9kYXRhYmFzZUlkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7
CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcygmZXJyb3Is
IGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5LCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZv
dXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwg
b3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCAmb3V0X3ByaW50Q29sb3IpOwogCkBAIC0y
NjgsNyArMjY4LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKIAogSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJh
Y2soUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERpc3BhdGNo
ZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UoYmFja2VuZERpc3BhdGNoZXIsIGlkKSB7IH0KIAotdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3ZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBheWxvYWQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpCiB7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGlmIChjb2x1bW5OYW1lcykKQEAgLTMzNCwxNCArMzM0LDE0IEBAIHZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlCiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1l
czsKICAgICBTdHJpbmcgb3V0X25vdGVzOwogICAgIGRvdWJsZSBvdXRfdGltZXN0YW1wOwogICAg
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IG91dF92YWx1ZXM7CiAgICAgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
YXRhYmFzZTo6RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7Ci0gICAgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9y
OworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZUlkIG91dF9kYXRh
YmFzZUlkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
IG91dF9zcWxFcnJvcjsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+
ZXhlY3V0ZVNRTFN5bmMoJmVycm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVt
bk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXls
b2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgJm91
dF9wcmludENvbG9yKTsKIApAQCAtMzUzLDE1ICszNTMsMTUgQEAgdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGUKICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwg
b3V0X3BheWxvYWQpOwogICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImRh
dGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQpOwogICAgICAgICByZXN1bHQtPnNldE9iamVjdChB
U0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7Ci0gICAgICAgIHJlc3VsdC0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9zY3JlZW5Db2xvcikpOwotICAgICAg
ICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9wcmludENvbG9yKSk7
CisgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9zY3JlZW5D
b2xvcikpOworICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29s
b3IiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9w
cmludENvbG9yKSk7CiAgICAgfQogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25z
ZShjYWxsSWQsIHJlc3VsdC5yZWxlYXNlKCksIGVycm9yKTsKIH0KIAogSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpFeGVj
dXRlU1FMQXN5bmNDYWxsYmFjayhQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShiYWNrZW5kRGlzcGF0Y2hlciwgaWQpIHsgfQogCi12
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FM
QXN5bmNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91
YmxlIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0
cmluZyYgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKK3ZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxi
YWNrOjpzZW5kU3VjY2VzcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1w
LCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xv
ciwgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVz
c2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBjb2x1bW5OYW1lcyk7
CkBAIC0zNzEsOCArMzcxLDggQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWMKICAgICBqc29uTWVz
c2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIHBheWxvYWQpOwogICAgIGpz
b25NZXNzYWdlLT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIGRhdGFiYXNl
SWQpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIp
LCBzcWxFcnJvcik7Ci0gICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNj
cmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldFRlc3RFbnVtQ29uc3RhbnRW
YWx1ZShzY3JlZW5Db2xvcikpOwotICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJwcmludENvbG9yIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldFRlc3RFbnVtQ29u
c3RhbnRWYWx1ZShwcmludENvbG9yKSk7CisgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJ
SUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldFRlc3RFbnVt
Q29uc3RhbnRWYWx1ZShzY3JlZW5Db2xvcikpOworICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldFRlc3RF
bnVtQ29uc3RhbnRWYWx1ZShwcmludENvbG9yKSk7CiAgICAgc2VuZElmQWN0aXZlKGpzb25NZXNz
YWdlLCBFcnJvclN0cmluZygpKTsKIH0KIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2FsbElk
LCBjb25zdCBJbnNwCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpAQCAtNTA4LDcgKzUwOCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAj
IyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogCi0jIyMg
QmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4gRmlsZTog
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUzOSwxMyArNTM5LDEzIEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRl
ZiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVC
dWlsZGVyc19oCisjaWZuZGVmIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUg
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNTUzLDcgKzU1Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiAKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7
CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBA
IC02NTQsNyArNjU0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8
Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAg
fQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJ
dGVtVHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRy
YWl0cyBJdGVtVHJhaXRzOwogfTsKIAogfSAvLyBEYXRhYmFzZQpAQCAtNjYyLDE2ICs2NjIsMTYg
QEAgcHVibGljOgogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNw
YWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVp
bGRlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5k
aWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmls
ZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJv
dG9jb2xUeXBlcy5jcHAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03MDMsNyArNzAzLDcgQEAgcHVibGljOgogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC03
MTEsNyArNzExLDcgQEAgcHVibGljOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotbmFtZXNw
YWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0gewogICAgICJyZWQiLApAQCAtNzI5
LDEwICs3MjksMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkg
ewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3Rv
Y29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMj
IEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IGNkZmIzNWY4ZmU2YjMxMWYwMjZkMTJmODc0YjFmODI4NTA0ODBmNWIuLjg4ODJmMzg4ZTJi
MTE5NjczMmUwODQ1Njk3ZmRmNDBlZWE4OTM3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9w
dGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtNzEsNyAr
NzEsNyBAQCBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiRGF0YWJhc2UuZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIiwgW3sibmFtZQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICAg
ICAgWWVsbG93ID0gNSwKICAgICAgICAgQmxhY2sgPSA2LAogICAgIH07IC8vIGVudW0gY2xhc3Mg
UHJpbnRDb2xvcgotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJz
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBp
bl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90
aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGluX3Zh
bHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3Qg
aW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgU3Ry
aW5nKiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVz
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9w
cmludENvbG9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1l
c3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGluX3ZhbHVl
cywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgaW5fc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBvdXRfY29s
dW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9w
cmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFt
ZXRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4qIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUq
IGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
aW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBj
b25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4qIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25z
dCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0
X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291
dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nKiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBpbl9jb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9z
Y3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRf
bm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qq
IG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQq
IG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigp
OwogfTsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogICAgIGJv
b2wgbm90ZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwogICAgIFN0cmluZyBpbl9ub3RlcyA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJ
SUxpdGVyYWwoIm5vdGVzIiksICZub3Rlc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9yc1B0cik7
CiAgICAgYm9vbCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxkb3VibGU+IGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXROdW1iZXIocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVy
YWwoInRpbWVzdGFtcCIpLCAmdGltZXN0YW1wX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRy
KTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3Rh
bXAgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0TnVtYmVyKHBhcmFtc0NvbnRhaW5l
clB0ciwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgJnRpbWVzdGFtcF92YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9yc1B0cik7CiAgICAgYm9vbCB2YWx1ZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJ
TGl0ZXJhbCgidmFsdWVzIiksICZ2YWx1ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnNQdHIp
OwogICAgIGJvb2wgcGF5bG9hZF92YWx1ZUZvdW5kID0gZmFsc2U7CkBAIC0yMjcsMTQgKzIyNywx
NCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4g
b3V0X2NvbHVtbk5hbWVzOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxT
dHJpbmc+IG91dF9ub3RlczsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
ZG91YmxlPiBvdXRfdGltZXN0YW1wOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gb3V0X3ZhbHVlczsKLSAgICBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb3V0
X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZUlkPiBvdXRfZGF0YWJhc2VJZDsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3Fs
RXJyb3I7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMgb3V0X3NjcmVlbkNvbG9yOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PFN0cmluZz4gb3V0X25vdGVzOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxkb3VibGU+IG91dF90aW1lc3RhbXA7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBvdXRfdmFsdWVzOworICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBvdXRf
cGF5bG9hZDsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkRhdGFiYXNlSWQ+IG91dF9kYXRhYmFzZUlkOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKKyAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVu
Q29sb3I7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycygmZXJyb3IsIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyAmaW5fY29sdW1uTmFt
ZXMgOiBudWxscHRyLCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25vdGVzIDogbnVsbHB0ciwgdGlt
ZXN0YW1wX3ZhbHVlRm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVsbHB0ciwgdmFsdWVzX3ZhbHVl
Rm91bmQgPyAmaW5fdmFsdWVzIDogbnVsbHB0ciwgcGF5bG9hZF92YWx1ZUZvdW5kID8gJmluX3Bh
eWxvYWQgOiBudWxscHRyLCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPyAmaW5fZGF0YWJhc2VJZCA6
IG51bGxwdHIsIHNxbEVycm9yX3ZhbHVlRm91bmQgPyAmaW5fc3FsRXJyb3IgOiBudWxscHRyLCBz
Y3JlZW5Db2xvcl92YWx1ZUZvdW5kID8gJmluX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgcHJpbnRD
b2xvcl92YWx1ZUZvdW5kID8gJmluX3ByaW50Q29sb3IgOiBudWxscHRyLCBvdXRfY29sdW1uTmFt
ZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQs
ICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCAmb3V0X3By
aW50Q29sb3IpOwogCkBAIC0yODQsMTQgKzI4NCwxNCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJ
ZAogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAg
ICAgU3RyaW5nIG91dF9ub3RlczsKICAgICBkb3VibGUgb3V0X3RpbWVzdGFtcDsKICAgICBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCBvdXRfdmFsdWVzOwogICAgIEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUgb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJh
c2U6OkRhdGFiYXNlSWQgb3V0X2RhdGFiYXNlSWQ7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwotICAgIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKKyAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJ
ZDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRf
c3FsRXJyb3I7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycygmZXJyb3IsIGluX2NvbHVtbk5hbWVzLCBpbl9ub3Rlcywg
aW5fdGltZXN0YW1wLCBpbl92YWx1ZXMsIGluX3BheWxvYWQsIGluX2RhdGFiYXNlSWQsIGluX3Nx
bEVycm9yLCBpbl9zY3JlZW5Db2xvciwgaW5fcHJpbnRDb2xvciwgb3V0X2NvbHVtbk5hbWVzLCAm
b3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0
X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENv
bG9yKTsKIApAQCAtMzAzLDggKzMwMyw4IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkCiAgICAg
ICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91dF9wYXlsb2Fk
KTsKICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiks
IG91dF9kYXRhYmFzZUlkKTsKICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFs
KCJzcWxFcnJvciIpLCBvdXRfc3FsRXJyb3IpOwotICAgICAgICByZXN1bHQtPnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldFRl
c3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfc2NyZWVuQ29sb3IpKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfcHJpbnRDb2xvcikpOworICAgICAgICBy
ZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfc2NyZWVuQ29sb3IpKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfcHJpbnRDb2xvcikp
OwogICAgIH0KICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBy
ZXN1bHQucmVsZWFzZSgpLCBlcnJvcik7CiB9CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMobG9uZyBjYWxsSWQKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29s
VHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CkBAIC00MTUsNyArNDE1LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
ICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAKLSMj
IyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyMjIyBCZWdpbiBGaWxl
OiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNDQ2LDEzICs0NDYsMTMg
QEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKLSNkZWZpbmUg
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCisjaWZuZGVmIEluc3BlY3RvclRlc3RQcm90b2Nv
bFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4KKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNDYwLDcgKzQ2MCw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25h
bWVzcGFjZSBQcm90b2NvbCB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCkBAIC01NjEsNyArNTYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKSk7CiAgICAgfQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90
b2NvbDo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOwogfTsKIAogfSAvLyBEYXRhYmFzZQpA
QCAtNTY5LDE2ICs1NjksMTYgQEAgcHVibGljOgogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1
aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5
cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFByb3RvY29sVHlw
ZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogCi0jIyMg
QmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBCZWdpbiBGaWxl
OiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02MTAsNyArNjEwLDcg
QEAgcHVibGljOgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5o
IgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCkBAIC02MTgsNyArNjE4LDcgQEAgcHVibGljOgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7
CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0gewog
ICAgICJyZWQiLApAQCAtNjM2LDEwICs2MzYsMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3Rh
bnRWYWx1ZShpbnQgY29kZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30g
Ly8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlw
ZUJ1aWxkZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXgg
NDYyOGE3ZjljOGRjZDlhODVlYmQ5YmVlZmZmZDkyYmFhMDg0YTU3Ni4uYTdlYTc4YjQyMWMxYzI4
YzA0YWYyYzhlMWMxZjBlYTUzODBjYzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTc4LDcgKzc4LDcgQEAgSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckNvbW1hbmQoIk5ldHdvcmszLmxvYWRSZXNvdXJjZTciLCBbXSwgW10pOwogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNjksNyArMzY5
LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3Vy
Y2U3KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00MzIsNyArNDMyLDcgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgK
KyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
NDYzLDEzICs0NjMsMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZG9tYWlucy13aXRo
LXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCi0jZGVm
aW5lIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJv
dG9jb2xUeXBlc19oCisjZGVmaW5lIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4K
KyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+CisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTQ3Nyw3ICs0Nzcs
NyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7
CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiAKIApAQCAtNDk3LDE2ICs0OTcsMTYgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1
ZSkKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90
b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gp
Ci0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gpCisjIyMgRW5kIEZpbGU6IEluc3Bl
Y3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RU
eXBlQnVpbGRlcnMuY3BwCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlw
ZXMuY3BwCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtNTM4LDcgKzUzOCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0
cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoVCBlbnVtVmFsdWUpCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVz
dFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTU0Niw3ICs1
NDYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZh
bHVlKFQgZW51bVZhbHVlKQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5
cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0gewogfTsKQEAgLTU1NywxMCArNTU3LDEwIEBA
IFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogCiAKLX0gLy8g
bmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSMjIyBF
bmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBFbmQgRmlsZTogSW5z
cGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9u
YWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0CmluZGV4IDk4ZWFjNmIxYjllZjQ1YWZjMmNlYWQ2YWNhZTY3NzYzNTgxMWUw
YWYuLmViMTZlNGQ5NmYzMGIzYWU3ZGQ4YTRhNjQ4ODI3MWYxZTRkNWU4ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9l
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0
aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC03MSw3ICs3MSw3IEBAIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzIiwgWyJjb2x1CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90
b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTE3Myw3ICsxNzMsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxk
ZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0x
ODcsOCArMTg3LDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JEYXRh
YmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKSB7IH0KLSAgICB2b2lkIGRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3Rh
bXAsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5D
b2xvciwgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsKLSAgICB2b2lkIGRpZEV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUg
dGltZXN0YW1wLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25z
dCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVu
Q29sb3IsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CisgICAgdm9pZCBkaWRFeGVjdXRlT3B0
aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJs
ZSogY29uc3QgdGltZXN0YW1wLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiB2YWx1ZXMsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9y
LCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29u
c3Qgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcik7CisgICAgdm9p
ZCBkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3Rlcywg
ZG91YmxlIHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
dmFsdWVzLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwg
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMmIHNjcmVl
bkNvbG9yLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpOwogcHJpdmF0ZToKICAgICBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogfTsKQEAgLTI0
Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0
IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWU+IHBheWxvYWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0
YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnMqIGNvbnN0IHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcqIGNv
bnN0IHByaW50Q29sb3IpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
OjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90
ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4gcGF5bG9hZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRD
b2xvcikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRpb25h
bFBhcmFtZXRlcnMiKSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVm
UHQKICAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVz
LCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
YXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYgcHJpbnRD
b2xvcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGlt
ZXN0YW1wLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3IsIGNv
bnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBq
c29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2Ut
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNl
LmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTI5Myw3ICsyOTMsNyBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnMoUGFzc1JlZgogCiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9u
dGVuZERpc3BhdGNoZXJzLmNwcAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVC
dWlsZGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTMyNCwxMyArMzI0LDEzIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVmCiAvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
ZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVy
c19oCi0jZGVmaW5lIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlc19oCisjZGVmaW5lIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVz
X2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1
aWxkZXIuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+
CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTMz
OCw3ICszMzgsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLW5hbWVzcGFjZSBUeXBl
QnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9u
cy4KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpAQCAtNDM0LDcgKzQzNCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVmIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKIH07CiAKIH0g
Ly8gRGF0YWJhc2UKQEAgLTQ0MiwxNiArNDQyLDE2IEBAIHB1YmxpYzoKIAogCiAKLX0gLy8gbmFt
ZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5kIEZpbGU6IElu
c3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisj
IyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
NDgzLDcgKzQ4Myw3IEBAIHB1YmxpYzoKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RU
eXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtNDkxLDcgKzQ5MSw3IEBAIHB1YmxpYzoKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3Bh
Y2UgUHJvdG9jb2wgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFudF92
YWx1ZXNbXSA9IHsKIH07CkBAIC01MDIsMTAgKzUwMiwxMCBAQCBTdHJpbmcgZ2V0VGVzdEVudW1D
b25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRl
cgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CmluZGV4IGM4YTBk
NWU4YTkzYWE1ZTdlMzAwMDRiZjM5OGU0Y2VlNDQ4YzY0OWEuLjU0MjE1NTQ2OGFmZmMzMDRjMWVl
YzUxNzk0NTY2YmNlZjk2NjQ1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRv
bWFpbi5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1y
ZXN1bHQKQEAgLTY2LDcgKzY2LDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVz
dFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtMTY4LDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBl
QnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
QEAgLTIzMSw3ICsyMzEsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yNjIsMTMgKzI2MiwxMyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBzYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVyc19oCi0jZGVmaW5lIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAor
I2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCisjZGVmaW5lIEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNQ
cm90b2NvbFR5cGVzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlw
ZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAK
LW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiAKIApAQCAt
MzAxLDE2ICszMDEsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIGdldFRlc3RFbnVt
Q29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSkKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWls
ZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNw
ZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBl
QnVpbGRlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVz
X2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIAotIyMjIEJl
Z2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgQmVnaW4gRmlsZTog
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzQyLDcgKzM0Miw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoVCBl
bnVtVmFsdWUpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKQEAgLTM1MCw3ICszNTAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJp
bmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKFQgZW51bVZhbHVlKQogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7
CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0gewog
fTsKQEAgLTM2MSwxMCArMzYxLDEwIEBAIFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUo
aW50IGNvZGUpIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVz
cGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVy
cy5jcHAKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2Vk
LW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAppbmRleCBkMWFlNGU4MGI0MmM5NTg3
NjAyNDBlZDZkN2Q1ZWFkZWQ5YWUxMWY4Li5kOWRiMTNmOWFlYWYxNzM1ZjNmMWFkNmE5MjIyYjY2
NTVjM2I2YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAg
LTY2LDcgKzY2LDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29s
VHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMTY4LDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTIzMSw3
ICsyMzEsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0
b3JUZXN0RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rv
clRlc3RUeXBlQnVpbGRlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2Nv
bFR5cGVzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC0yNjIsMTMgKzI2MiwxMyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgZnJvbSBzaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbgogLy8gYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWlu
c3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBl
QnVpbGRlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYg
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9j
b2xUeXBlc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clR5cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xU
eXBlcy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CkBAIC0yNzYsNyArMjc2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3Bh
Y2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogLy8gRm9yd2FyZCBkZWNs
YXJhdGlvbnMuCiBuYW1lc3BhY2UgUnVudGltZSB7CkBAIC0zMzEsNyArMzMxLDcgQEAgcHVibGlj
OgogICAgICAgICBCdWlsZGVyPFNUQVRFIHwgVHlwZVNldD4mIHNldFR5cGUoVHlwZSB2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIFR5cGVTZXQp
LCBwcm9wZXJ0eV90eXBlX2FscmVhZHlfc2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJ0eXBlIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldFRl
c3RFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkpOworICAgICAgICAg
ICAgbV9yZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInR5cGUiKSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHN0YXRpY19jYXN0PGludD4odmFsdWUp
KSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPFR5cGVTZXQ+KCk7CiAgICAgICAgIH0K
IApAQCAtMzU3LDE0ICszNTcsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CiAgICAgfQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRy
YWl0cyBJdGVtVHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0
SXRlbVRyYWl0cyBJdGVtVHJhaXRzOwogCiAgICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoInN0cmluZyIpLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRBcnJh
eShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHZhbHVl
KQorICAgIHZvaWQgc2V0QXJyYXkoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+PiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OnNl
dEFycmF5KEFTQ0lJTGl0ZXJhbCgiYXJyYXkiKSwgdmFsdWUpOwogICAgIH0KQEAgLTM3NCwxNiAr
Mzc0LDE2IEBAIHB1YmxpYzoKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8v
IG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0
VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMu
aAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gpCisjIyMg
RW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIAotIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXMuY3BwCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNDE1LDcgKzQxNSw3IEBAIHB1YmxpYzoK
IC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IApAQCAtNDIzLDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFudF92YWx1ZXNbXSA9IHsKICAgICAibnVsbCIs
CkBAIC00MzcsMTAgKzQzNywxMCBAQCBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKGlu
dCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3Bh
Y2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMu
Y3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKaW5kZXgg
ZDQ1NmNlNDUzMWUzNWE0ODBjM2I3NzljZGYwOThkY2YxYjhjNjA1Mi4uNWYxNTZkY2Q5ODZlMDc3
NDNmNzY4MTVmZWExNmIwM2NjNGU0NmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxp
YXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlh
c2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBAIC02Niw3ICs2Niw3IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5o
IgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE2OCw3ICsxNjgs
NyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0yMzEsNyArMjMxLDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0Y2hl
cnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyMj
IyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjYy
LDEzICsyNjIsMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlv
bi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKLSNk
ZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCisjaWZuZGVmIEluc3BlY3RvclRlc3RQ
cm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5
cGVCdWlsZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5o
PgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4KKyNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMjc2LDcgKzI3
Niw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVy
IHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIAogCkBAIC0yOTYsMTYgKzI5NiwxNiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKFQgZW51bVZh
bHVlKQogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFBy
b3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNf
aCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8g
IWRlZmluZWQoSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5z
cGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVz
dFR5cGVCdWlsZGVycy5jcHAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xU
eXBlcy5jcHAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC0zMzcsNyArMzM3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
U3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSkKIC8vIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JU
ZXN0UHJvdG9jb2xUeXBlcy5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtMzQ1LDcg
KzM0NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50
VmFsdWUoVCBlbnVtVmFsdWUpCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1uYW1lc3BhY2Ug
VHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiB9OwpAQCAtMzU2LDEwICszNTYsMTAg
QEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAKIAotfSAv
LyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotIyMj
IEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJ
bnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24t
cmVzdWx0CmluZGV4IDc4N2ZmNGRlYTllN2YwNDE1ZWJiOGYzYTkyNmE2NzdkZTkxNTkzYWUuLjI4
OGM4ZDljOTMxYjdiZDAxNWRlMzhkYjNjNDIzNmVhZmFiYTE5MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJy
YXktdHlwZS5qc29uLXJlc3VsdApAQCAtNjksNyArNjksNyBAQCBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyRW51bSgiRGVidWdnZXIuUmVhc29uIiwge0RpZWQ6ICJEaWVkIiwgRmFpbnRlZDogIkZh
aW50ZQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RU
eXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgog
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0xNzEsNyArMTcxLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1
ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMjM0LDcgKzIzNCw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9u
dGVuZERpc3BhdGNoZXJzLmNwcAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVC
dWlsZGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTI2NSwxMyArMjY1LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5
cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCi0j
ZGVmaW5lIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JUZXN0
UHJvdG9jb2xUeXBlc19oCisjZGVmaW5lIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+CisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTI3OSw3ICsy
NzksNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRl
ciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KIG5h
bWVzcGFjZSBEZWJ1Z2dlciB7CkBAIC0zMTYsMTYgKzMxNiwxNiBAQCBlbnVtIGNsYXNzIFJlYXNv
biB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJv
dG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19o
KQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oKQorIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0
VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KQEAgLTM1Nyw3ICszNTcsNyBAQCBlbnVtIGNsYXNzIFJlYXNvbiB7CiAv
LyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
QEAgLTM2NSw3ICszNjUsNyBAQCBlbnVtIGNsYXNzIFJlYXNvbiB7CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsK
IAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiAg
ICAgIkRpZWQiLApAQCAtMzc5LDEwICszNzksMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3Rh
bnRWYWx1ZShpbnQgY29kZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30g
Ly8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlw
ZUJ1aWxkZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAppbmRleCBkZWFlNTVjOWRjNWExZDhh
ZTkyNzkwYTc4MGVkYjcyMjQ0YjZmM2NkLi42YTgyYmRlNzAwNjZlNjkxZTYzMTZkYWJhMDVkNjQz
NjRmYTVmNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CkBAIC03MCw3ICs3
MCw3IEBAIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJSdW50aW1lLlR3b0xlZ2dlZEFu
aW1hbHMiLCB7RHVja3M6ICJEdWNrcyIsIEhlbnM6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE3Miw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JU
ZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMu
aCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CkBAIC0yMzUsNyArMjM1LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICMjIyBF
bmQgRmlsZTogSW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAKLSMjIyBCZWdp
biBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNw
ZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjY2LDEzICsyNjYsMTMgQEAgbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbgog
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3Bl
Y3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJz
X2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAorI2RlZmluZSBJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
ckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2Nv
bFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCkBAIC0yODAsNyArMjgwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogLy8g
Rm9yd2FyZCBkZWNsYXJhdGlvbnMuCiBuYW1lc3BhY2UgUnVudGltZSB7CkBAIC0zMTgsMTYgKzMx
OCwxNiBAQCBlbnVtIGNsYXNzIFR3b0xlZ2dlZEFuaW1hbHMgewogCiAKIAotfSAvLyBuYW1lc3Bh
Y2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFBy
b3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMu
aAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0zNTks
NyArMzU5LDcgQEAgZW51bSBjbGFzcyBUd29MZWdnZWRBbmltYWxzIHsKIC8vIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0
UHJvdG9jb2xUeXBlcy5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtMzY3LDcgKzM2
Nyw3IEBAIGVudW0gY2xhc3MgVHdvTGVnZ2VkQW5pbWFscyB7CiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAog
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiAgICAg
IlBpZ3MiLApAQCAtMzg1LDEwICszODUsMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRW
YWx1ZShpbnQgY29kZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8g
bmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1
aWxkZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggOTYwNjg4Y2NiMTRkOTdh
NmVlODdlZTEyYjNmM2I2MDBlN2I0MWFjOC4uODFmZDNhNGE1MWY1YjUxZTE0MWI0ZDIyNTMwMjRk
NDg2OGVjMWI5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTY5
LDcgKzY5LDcgQEAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIlRlc3QuYXR0ZW1w
dEN1cnNlIiwgW3sibmFtZSI6ICJjdXJzZSIsICJ0eXBlIjoKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODAsNyArODAsNyBAQCB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSW5zcGVjdG9yVGVzdEJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGF0dGVtcHRDdXJzZShFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGluX2N1cnNl
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9jZW5z
b3JlZEN1cnNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGF0dGVtcHRDdXJzZShFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGluX2N1cnNlLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9jZW5zb3JlZEN1
cnNlKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yVGVzdEJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcigpOwogfTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEluc3BlY3Rv
clRlc3RCYWNrZW5kRGlzcGF0Y2hlcjo6YXR0ZW1wdEN1cnNlKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYgogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfY2Vuc29yZWRDdXJzZTsKKyAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfY2Vuc29yZWRDdXJz
ZTsKICAgICBtX2FnZW50LT5hdHRlbXB0Q3Vyc2UoJmVycm9yLCBpbl9jdXJzZSwgJm91dF9jZW5z
b3JlZEN1cnNlKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpCkBAIC0yMzYsNyArMjM2LDcg
QEAgdm9pZCBJbnNwZWN0b3JUZXN0QmFja2VuZERpc3BhdGNoZXI6OmF0dGVtcHRDdXJzZShsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2IKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0yOTksNyArMjk5LDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0Y2hl
cnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyMj
IyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzMw
LDEzICszMzAsMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlv
bi1vYmplY3QtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCi0jZGVmaW5lIEluc3Bl
Y3RvclRlc3RUeXBlQnVpbGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBl
c19oCisjZGVmaW5lIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
aD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+CisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3Bh
Y2UgUHJvdG9jb2wgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCkpOwogICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVj
dEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKIH07CiAKIGNsYXNzIE9wdGlvbmFsUGFyYW1l
dGVyQnVuZGxlIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSB7CkBAIC00
ODksOSArNDg5LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQot
ICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVt
VHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRyYWl0
cyBJdGVtVHJhaXRzOwogCi0gICAgdm9pZCBzZXRDb2x1bW5OYW1lcyhQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHZhbHVlKQorICAgIHZvaWQgc2V0Q29s
dW1uTmFtZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEFycmF5KEFTQ0lJ
TGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgdmFsdWUpOwogICAgIH0KQEAgLTUxNiw3ICs1MTYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldFZhbHVlKEFTQ0lJTGl0
ZXJhbCgicGF5bG9hZCIpLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRFcnJvcihQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gdmFsdWUpCisg
ICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gdmFsdWUpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRP
YmplY3QoQVNDSUlMaXRlcmFsKCJlcnJvciIpLCB2YWx1ZSk7CiAgICAgfQpAQCAtNTUzLDcgKzU1
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFBhcmFtZXRlckJ1bmRsZTsKICAg
ICBwdWJsaWM6CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvbHVtbk5hbWVzU2V0PiYgc2V0
Q29sdW1uTmFtZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvbHVtbk5hbWVzU2V0PiYgc2V0
Q29sdW1uTmFtZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAm
IENvbHVtbk5hbWVzU2V0KSwgcHJvcGVydHlfY29sdW1uTmFtZXNfYWxyZWFkeV9zZXQpOwogICAg
ICAgICAgICAgbV9yZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwg
dmFsdWUpOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBj
YXN0U3RhdGU8UGF5bG9hZFNldD4oKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXI8U1RB
VEUgfCBFcnJvclNldD4mIHNldEVycm9yKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGF0YWJhc2U6OkVycm9yPiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IEVycm9y
U2V0PiYgc2V0RXJyb3IoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNU
QVRFICYgRXJyb3JTZXQpLCBwcm9wZXJ0eV9lcnJvcl9hbHJlYWR5X3NldCk7CiAgICAgICAgICAg
ICBtX3Jlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgdmFsdWUpOwpAQCAt
NjIyLDcgKzYyMiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5v
RmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0K
LSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRl
bVRyYWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFp
dHMgSXRlbVRyYWl0czsKIH07CiAKIC8qIENvbmZsaWN0ZWQgbmFtZXMgbWF5IGNhdXNlIGdlbmVy
YXRlZCBnZXR0ZXJzL3NldHRlcnMgdG8gY2xhc2ggd2l0aCBidWlsdC1pbiBJbnNwZWN0b3JPYmpl
Y3QgbWV0aG9kcy4gKi8KQEAgLTcxNyw3ICs3MTcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpT
dHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CisgICAgdHlwZWRlZiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CiB9OwogCiB9IC8vIERhdGFiYXNlCkBA
IC03NTUsNyArNzU1LDcgQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgUGFyYW1ldGVy
QnVuZGxlOwogICAgIHB1YmxpYzoKIAotICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29sdW1uTmFt
ZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+IHZhbHVlKQorICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQ29sdW1uTmFt
ZXNTZXQ+JiBzZXRDb2x1bW5OYW1lcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VCghKFNUQVRFICYgQ29sdW1uTmFtZXNTZXQpLCBwcm9wZXJ0eV9jb2x1bW5OYW1lc19hbHJlYWR5
X3NldCk7CiAgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1
bW5OYW1lcyIpLCB2YWx1ZSk7CkBAIC03OTAsNyArNzkwLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIGNhc3RTdGF0ZTxQYXlsb2FkU2V0PigpOwogICAgICAgICB9CiAKLSAgICAgICAg
QnVpbGRlcjxTVEFURSB8IEVycm9yU2V0PiYgc2V0RXJyb3IoUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHZhbHVlKQorICAgICAgICBCdWlsZGVyPFNU
QVRFIHwgRXJyb3JTZXQ+JiBzZXRFcnJvcihQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4gdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKCEoU1RBVEUgJiBFcnJvclNldCksIHByb3BlcnR5X2Vycm9yX2FscmVhZHlfc2V0KTsK
ICAgICAgICAgICAgIG1fcmVzdWx0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJlcnJvciIpLCB2
YWx1ZSk7CkBAIC04MjQsMjMgKzgyNCwyMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJ
dGVtVHJhaXRzIEl0ZW1UcmFpdHM7CisgICAgdHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpT
dHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CiB9OwogCiB9IC8vIFRlc3QKIAogCiAKLX0gLy8g
bmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5kIEZpbGU6
IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
clRlc3RQcm90b2NvbFR5cGVzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2Nv
bFR5cGVzLmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3Bw
CisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtODcyLDcgKzg3Miw3IEBAIHB1YmxpYzoKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wt
YmluZGluZ3MucHkKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5o
IgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtODgwLDcgKzg4MCw3IEBAIHB1YmxpYzoK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1l
c3BhY2UgUHJvdG9jb2wgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFu
dF92YWx1ZXNbXSA9IHsKIH07CkBAIC04OTEsMTAgKzg5MSwxMCBAQCBTdHJpbmcgZ2V0VGVzdEVu
dW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVp
bGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6IEluc3BlY3Rv
clRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2Nv
bFR5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCA5ZDRm
ZWFiMjUwMjY0Y2E2ZmU0ZGE0ZWRiOGM4NDlmZDczMjk1ODViLi4xZWYxM2M3MjA1NDU2YjAzYzhh
YTFjM2QyNDZjZWQ1MTEzNGE0ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1j
YXN0cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJl
c3VsdApAQCAtNzAsNyArNzAsNyBAQCBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiVGVz
dC5DYXN0ZWRBbmltYWxzIiwge0R1Y2tzOiAiRHVja3MiLCBIZW5zOiAiSGVucwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNzIsNyArMTcyLDcg
QEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMjM1LDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJz
LmNwcAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMg
QmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2Niwx
MyArMjY2LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtcmVxdWlyaW5nLXJ1
bnRpbWUtY2FzdHMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmluZSBJbnNwZWN0
b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNf
aAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+
Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC0yODAsNyArMjgwLDcgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNl
IFByb3RvY29sIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiBuYW1lc3BhY2UgVGVzdCB7
CkBAIC0zNTQsMTAgKzM1NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0
YXRlPE51bWJlclNldD4oKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBB
bmltYWxzU2V0PiYgc2V0QW5pbWFscyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpDYXN0
ZWRBbmltYWxzIHZhbHVlKQorICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQW5pbWFsc1NldD4mIHNl
dEFuaW1hbHMoSW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscyB2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIEFuaW1hbHNT
ZXQpLCBwcm9wZXJ0eV9hbmltYWxzX2FscmVhZHlfc2V0KTsKLSAgICAgICAgICAgIG1fcmVzdWx0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJhbmltYWxzIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkpOwor
ICAgICAgICAgICAgbV9yZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImFuaW1hbHMiKSwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHN0YXRpY19jYXN0
PGludD4odmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPEFuaW1hbHNTZXQ+
KCk7CiAgICAgICAgIH0KIApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBjYXN0U3RhdGU8SWRTZXQ+KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVy
PFNUQVRFIHwgVHJlZVNldD4mIHNldFRyZWUoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFU
RSB8IFRyZWVTZXQ+JiBzZXRUcmVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVz
dDo6UmVjdXJzaXZlT2JqZWN0MT4gdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKCEoU1RBVEUgJiBUcmVlU2V0KSwgcHJvcGVydHlfdHJlZV9hbHJlYWR5X3NldCk7
CiAgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidHJlZSIpLCB2
YWx1ZSk7CkBAIC00MDEsNyArNDAxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KSk7CiAgICAgfQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRl
bVRyYWl0cyBJdGVtVHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3Ry
dWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOwogfTsKIAogLyogICovCkBAIC00NjQsOSArNDY0LDkg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQotICAgIHR5cGVkZWYg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOworICAg
IHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRz
OwogCi0gICAgdm9pZCBzZXRPYmooUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
ZXN0OjpSZWN1cnNpdmVPYmplY3QyPiB2YWx1ZSkKKyAgICB2b2lkIHNldE9iaihQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+IHZhbHVlKQogICAg
IHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
b2JqIiksIHZhbHVlKTsKICAgICB9CkBAIC01MTgsOSArNTE4LDkgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9y
OjpQcm90b2NvbDo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOwogCi0gICAgdm9pZCBzZXRP
YmooUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpSZWN1cnNpdmVPYmpl
Y3QxPiB2YWx1ZSkKKyAgICB2b2lkIHNldE9iaihQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+IHZhbHVlKQogICAgIHsKICAgICAgICAgSW5zcGVj
dG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgib2JqIiksIHZhbHVlKTsKICAg
ICB9CkBAIC01MjgsMzggKzUyOCwzOCBAQCBwdWJsaWM6CiAKIH0gLy8gVGVzdAogCi10ZW1wbGF0
ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OkNh
c3RlZEFuaW1hbHM+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gewogI2lmICFBU1NFUlRfRElTQUJMRUQK
IHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUqKTsKICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwotdGVtcGxhdGU8PiBz
dHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVl
ZGluZ0Nhc3Q+IHsKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRl
c3Q6OlR5cGVOZWVkaW5nQ2FzdD4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiB2YWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4geworc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBydW50aW1l
Q2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKTsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAog
fTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT4gewordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPiB7CiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUo
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSopOwogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQK
IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdU
cmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj4gewogI2lm
ICFBU1NFUlRfRElTQUJMRUQKIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqKTsKICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
CiB9OwogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9j
b2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oKQot
IyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVm
aW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlw
ZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVz
LmNwcAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhh
c0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7CiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVz
dFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTU5OSw3ICs1
OTksNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlKik7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1uYW1lc3BhY2Ug
VHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiAgICAgIkR1Y2tzIiwKQEAgLTYxOCw3
ICs2MTgsNyBAQCBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAK
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKLXZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCit2b2lkIEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz46OmFzc2VydFZhbHVlSGFz
RXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQogewogICAgIFN0
cmluZyBzOwogICAgIGJvb2wgY2FzdF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpOwpAQCAtNjI4
LDcgKzYyOCw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
ZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0VmFsdWVIYXNFCiAjZW5kaWYgLy8gIUFTU0VSVF9E
SVNBQkxFRAogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotdm9pZCBCaW5kaW5nVHJhaXRzPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OmFzc2VydFZhbHVlSGFz
RXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQordm9pZCBCaW5k
aW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OmFz
c2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVl
KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RS
ZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBC
aW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5nQ2Fz
dD46OmFzc2VydFZhbHVlSGEKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0
b3IgYW5pbWFsc1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoImFuaW1hbHMiKSk7CiAg
ICAgICAgIEFTU0VSVChhbmltYWxzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwotICAgICAgICBCaW5k
aW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+Ojph
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhbmltYWxzUG9zLT52YWx1ZS5nZXQoKSk7CisgICAg
ICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFs
cz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFuaW1hbHNQb3MtPnZhbHVlLmdldCgpKTsK
ICAgICB9CiAgICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGlkUG9zID0g
b2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgiaWQiKSk7CkBAIC02NTYsNyArNjU2LDcgQEAgdm9p
ZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5n
Q2FzdD46OmFzc2VydFZhbHVlSGEKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRl
cmF0b3IgdHJlZVBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoInRyZWUiKSk7CiAgICAg
ICAgIEFTU0VSVCh0cmVlUG9zICE9IG9iamVjdC0+ZW5kKCkpOwotICAgICAgICBCaW5kaW5nVHJh
aXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3Nl
cnRWYWx1ZUhhc0V4cGVjdGVkVHlwZSh0cmVlUG9zLT52YWx1ZS5nZXQoKSk7CisgICAgICAgIEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46
OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKHRyZWVQb3MtPnZhbHVlLmdldCgpKTsKICAgICB9
CiAKICAgICBpbnQgZm91bmRQcm9wZXJ0aWVzQ291bnQgPSA1OwpAQCAtNjY1LDIxICs2NjUsMjEg
QEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVO
ZWVkaW5nQ2FzdD46OmFzc2VydFZhbHVlSGEKIH0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6VHlwZU5lZWRpbmdD
YXN0PiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVk
aW5nQ2FzdD46OnJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZT4gdmFsdWUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVk
aW5nQ2FzdD4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVl
ZGluZ0Nhc3Q+OjpydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IHZhbHVlKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gb2Jq
ZWN0OwogICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTsKICAgICBB
U1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5n
Q2FzdD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9iamVjdC5nZXQoKSk7CisgICAgQmlu
ZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojph
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShvYmplY3QuZ2V0KCkpOwogI2VuZGlmICAvLyAhQVNT
RVJUX0RJU0FCTEVECi0gICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Kj4oc3RhdGlj
X2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7Cisg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVO
ZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5
cGVfY2FzdF9wcm9ibGVtKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpQcm90
b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3RCYXNlKj4ob2JqZWN0LmdldCgpKSk7CiB9CiAKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKLXZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpS
ZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSogdmFsdWUpCit2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90
b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQogewogICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9i
amVjdCk7CkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUgKICAgICB7
CiAgICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igb2JqUG9zID0gb2JqZWN0LT5maW5k
KEFTQ0lJTGl0ZXJhbCgib2JqIikpOwogICAgICAgICBpZiAob2JqUG9zICE9IG9iamVjdC0+ZW5k
KCkpIHsKLSAgICAgICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9ialBv
cy0+dmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlBy
b3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUob2JqUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0Nv
dW50OwogICAgICAgICB9CiAgICAgfQpAQCAtNjk5LDcgKzY5OSw3IEBAIHZvaWQgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNz
ZXJ0VmFsdWVICiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAotdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJl
Y3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlKiB2YWx1ZSkKK3ZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUo
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gb2JqZWN0OwogICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2Jq
ZWN0KTsKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSAogICAgIHsK
ICAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBvYmpQb3MgPSBvYmplY3QtPmZpbmQo
QVNDSUlMaXRlcmFsKCJvYmoiKSk7CiAgICAgICAgIGlmIChvYmpQb3MgIT0gb2JqZWN0LT5lbmQo
KSkgewotICAgICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
ZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUob2JqUG9z
LT52YWx1ZS5nZXQoKSk7CisgICAgICAgICAgICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlw
ZShvYmpQb3MtPnZhbHVlLmdldCgpKTsKICAgICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291
bnQ7CiAgICAgICAgIH0KICAgICB9CkBAIC03MTgsMTAgKzcxOCwxMCBAQCB2b2lkIEJpbmRpbmdU
cmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj46OmFz
c2VydFZhbHVlSAogfQogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIAotfSAvLyBuYW1lc3Bh
Y2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JU
ZXN0UHJvdG9jb2xUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwCmluZGV4IDgzNDk2MzBmMGMx
MjgwN2VkMjA2Zjg5YWVlYTUzNjkyOWU2YTBjMDEuLjIzYzIzZGY2ZDYwMDM0ZTEwMWQ3MTgyNGVm
ZTE0ZDE4ZTI0YzBjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5o
IgogCi0jaW5jbHVkZSAiSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JKU1Byb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlICJUeXBlTG9jYXRpb24uaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSGlnaEZpZGVsaXR5VHlwZVByb2Zp
bGVyOjppbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qIGxvY2F0aW9uKQogICAgIGJ1Y2tl
dC5hcHBlbmQobG9jYXRpb24pOwogfQogCi12b2lkIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6
Z2V0VHlwZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3IgZGVzY3JpcHRvciwgdW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlE
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9u
PiYgZGVzY3JpcHRpb24pCit2b2lkIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNG
b3JWYXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0
b3IgZGVzY3JpcHRvciwgdW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPiYgZGVzY3JpcHRp
b24pCiB7CiAgICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9IGZpbmRMb2NhdGlvbihkaXZvdCwg
c291cmNlSUQsIGRlc2NyaXB0b3IpOwogICAgIGlmICghbG9jYXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5o
CmluZGV4IDEyM2MyNTUzNzk2MTExYTZjNDliODI3MjJmNjYwOTMzNmI3M2ExZjYuLjc4Njk1M2Iy
ZmVmMTVhM2NjODViOTU1MTc4NDI4ZWUyZmNjNTA4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5oCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFR5cGVCdWls
ZGVyICB7IG5hbWVzcGFjZSBSdW50aW1lIHsKK25hbWVzcGFjZSBJbnNwZWN0b3IgeyBuYW1lc3Bh
Y2UgUHJvdG9jb2wgIHsgbmFtZXNwYWNlIFJ1bnRpbWUgewogY2xhc3MgVHlwZURlc2NyaXB0aW9u
OwogfX19CiAKQEAgLTk1LDcgKzk1LDcgQEAgZW51bSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlw
dG9yIHsKIGNsYXNzIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlciB7CiBwdWJsaWM6CiAgICAgdm9p
ZCBsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihUeXBlTG9jYXRpb24qKTsKLSAgICB2b2lkIGdldFR5
cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNj
cmlwdG9yIGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mKTsK
KyAgICB2b2lkIGdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJf
dCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNj
cmlwdGlvbj4mKTsKICAgICB2b2lkIGluc2VydE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiopOwog
ICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSogZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkg
eyByZXR1cm4gJm1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOyB9CiAgICAgVHlwZUxvY2F0aW9u
Q2FjaGUqIHR5cGVMb2NhdGlvbkNhY2hlKCkgeyByZXR1cm4gJm1fdHlwZUxvY2F0aW9uQ2FjaGU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNDZmYmE5
OWJhMTJjZDY5YTc0NWI5N2ViNDc5OTM1NWQ3MTNiMjg2NC4uYThmOWE1NTAwOTAwNWY4YWQzM2Fi
NWFiZDQ3Njk1NDEyMDcyZTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJUeXBlU2V0LmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTIxNCw5ICsyMTQsOSBAQCBTdHJpbmcgVHlwZVNldDo6ZGlzcGxheU5hbWUo
KSBjb25zdAogICAgIHJldHVybiAiKG1hbnkpIjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBlTmFt
ZXMoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBlTmFtZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWVuID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHNlZW4gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZp
bmVkKQogICAgICAgICAgc2Vlbi0+YWRkSXRlbSgiVW5kZWZpbmVkIik7CiAgICAgaWYgKG1fc2Vl
blR5cGVzICYgVHlwZU51bGwpCkBAIC0yMzMsOSArMjMzLDkgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBl
TmFtZXMKICAgICByZXR1cm4gc2Vlbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
U3RydWN0dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlv
bnMoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4+IFR5cGVTZXQ6OmFs
bFN0cnVjdHVyZVJlcHJlc2VudGF0aW9ucygpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0
cnVjdHVyZURlc2NyaXB0aW9uPj4gZGVzY3JpcHRpb24gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlw
dGlvbj46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4+IGRlc2Ny
aXB0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LT5zaXplKCk7IGkrKykKICAgICAgICAg
ZGVzY3JpcHRpb24tPmFkZEl0ZW0obV9zdHJ1Y3R1cmVIaXN0b3J5LT5hdChpKS0+aW5zcGVjdG9y
UmVwcmVzZW50YXRpb24oKSk7CkBAIC0zNjEsMTQgKzM2MSwxNCBAQCBTdHJpbmcgU3RydWN0dXJl
U2hhcGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKCkKICAgICByZXR1cm4gcmVwcmVzZW50YXRpb24u
dG9TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gU3RydWN0dXJlU2hhcGU6Omluc3BlY3RvclJlcHJl
c2VudGF0aW9uKCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3Ry
dWN0dXJlRGVzY3JpcHRpb24+IFN0cnVjdHVyZVNoYXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlv
bigpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW9uPiBiYXNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
U3RydWN0dXJlRGVzY3JpcHRpb246OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gY3VycmVudE9iamVjdCA9
IGJhc2U7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVy
ZURlc2NyaXB0aW9uPiBiYXNlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0
dXJlRGVzY3JpcHRpb246OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gY3VycmVudE9iamVjdCA9IGJhc2U7CiAg
ICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBjdXJyZW50U2hhcGUgPSB0aGlzOwogCiAgICAgd2hp
bGUgKGN1cnJlbnRTaGFwZSkgewotICAgICAgICBhdXRvIGZpZWxkcyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBhdXRvIGZpZWxkcyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBm
b3IgKGF1dG8gaXQgPSBjdXJyZW50U2hhcGUtPm1fZmllbGRzLmJlZ2luKCksIGVuZCA9IGN1cnJl
bnRTaGFwZS0+bV9maWVsZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgIGZp
ZWxkcy0+YWRkSXRlbSgoKml0KS5nZXQoKSk7CiAKQEAgLTM3Niw3ICszNzYsNyBAQCBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9u
PiBTdHJ1Y3R1cmVTaGFwZQogICAgICAgICBjdXJyZW50T2JqZWN0LT5zZXRDb25zdHJ1Y3Rvck5h
bWUoY3VycmVudFNoYXBlLT5tX2NvbnN0cnVjdG9yTmFtZSk7CiAKICAgICAgICAgaWYgKGN1cnJl
bnRTaGFwZS0+bV9wcm90bykgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBuZXh0T2JqZWN0ID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb246OmNyZWF0ZSgp
OworICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW9uPiBuZXh0T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6U3RydWN0dXJlRGVzY3JpcHRpb246OmNyZWF0ZSgpOwogICAgICAgICAgICAgY3VycmVudE9i
amVjdC0+c2V0UHJvdG90eXBlU3RydWN0dXJlKG5leHRPYmplY3QpOwogICAgICAgICAgICAgY3Vy
cmVudE9iamVjdCA9IG5leHRPYmplY3Q7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVTZXQuaAppbmRleCAzNGZhNDBkMDJiOGRkZjE4ZmFhMzRlYjkxODJlNTk5Y2Yy
MzNiNDRkLi4zYTMzZjRhNzNjNWZlNzJkNWQ4ZWZjMDE2ODlmMGFhNzAwNWMwZjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKLW5hbWVzcGFjZSBU
eXBlQnVpbGRlciAgeworbmFtZXNwYWNlIFByb3RvY29sICB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBBcnJheTsKIAogbmFtZXNwYWNlIFJ1bnRpbWUgewpAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBtYXJrQXNGaW5hbCgpOwogICAgIHZvaWQgYWRkUHJvcGVydHkoUmVm
UHRyPFN0cmluZ0ltcGw+KTsKICAgICBTdHJpbmcgc3RyaW5nUmVwcmVzZW50YXRpb24oKTsKLSAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURl
c2NyaXB0aW9uPiBpbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpOworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IGluc3BlY3Rv
clJlcHJlc2VudGF0aW9uKCk7CiAgICAgdm9pZCBzZXRDb25zdHJ1Y3Rvck5hbWUoU3RyaW5nIG5h
bWUpIHsgbV9jb25zdHJ1Y3Rvck5hbWUgPSAobmFtZS5pc0VtcHR5KCkgPyAiT2JqZWN0IiA6IG5h
bWUpOyB9CiAgICAgU3RyaW5nIGNvbnN0cnVjdG9yTmFtZSgpIHsgcmV0dXJuIG1fY29uc3RydWN0
b3JOYW1lOyB9CiAgICAgdm9pZCBzZXRQcm90byhQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBz
aGFwZSkgeyBtX3Byb3RvID0gc2hhcGU7IH0KQEAgLTk0LDggKzk0LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBSdW50aW1lVHlwZSBnZXRSdW50aW1lVHlwZUZvclZhbHVlKEpTVmFsdWUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzZWVuVHlwZXMoKSBjb25zdDsKICAgICBTdHJpbmcg
ZGlzcGxheU5hbWUoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+IGFsbFByaW1pdGl2ZVR5cGVOYW1lcygpIGNvbnN0OwotICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBhbGxTdHJ1Y3R1cmVSZXByZXNl
bnRhdGlvbnMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGFsbFByaW1pdGl2ZVR5cGVOYW1lcygpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBhbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbGVhc3RDb21tb25BbmNlc3RvcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjZTE1ODFkZDk1OTIyOWFiYjE4N2RkZGViYmUwYmEw
ZGMxN2Y3MjU4Li4zNzRjZDk3NThhOTA0MTMxMTJkYTQwMGQ2NDNkMTIzZjFlNzAyZmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtNzk0LDggKzc5NCw4IEBAIHNldChXZWJDb3JlX0lOU1BFQ1RP
Ul9QUk9UT0NPTF9TQ1JJUFRTCiAgICAgJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0v
Y29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKICAg
ICAke1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CiAgICAgJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRT
X0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5Ci0gICAgJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0
ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5Ci0gICAgJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRT
X0RJUn0vY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkKKyAg
ICAke1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRlX3Byb3Rv
Y29sX3R5cGVzX2hlYWRlci5weQorICAgICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9
L2NvZGVnZW4vZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKICAgICAk
e1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRvci5weQogICAg
ICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weQogICAgICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vX19p
bml0X18ucHkKQEAgLTMyODUsOCArMzI4NSw4IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICAg
ICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvcldlYkJhY2tlbmRE
aXNwYXRjaGVycy5oCiAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9J
bnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICAgICAgICAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oCi0g
ICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJUeXBl
QnVpbGRlcnMuY3BwCi0gICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9J
bnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaAorICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5jcHAKKyAgICAgICAgICAgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaAog
ICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJJTlNQRUNUT1JVSV9ESVJ9L1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yV2ViQmFja2VuZENvbW1hbmRzLmpzCiAgICAgTUFJTl9E
RVBFTkRFTkNZICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWIuanNv
bgogICAgIERFUEVORFMgJHtXZWJDb3JlX0lOU1BFQ1RPUl9QUk9UT0NPTF9TQ1JJUFRTfQpAQCAt
MzI5Nyw3ICszMjk3LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvcldl
YkJhY2tlbmREaXNwYXRjaGVycy5jcHAKICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAKLSAgICAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcAorICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmNwcAog
KQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGE5Y2Y2YzIxZWEyM2ZlNWEx
YjFmNjdmYjVmNGYzNjk4OTU1ZTNmNDguLjA0ZjE0MjE3YWIwZGJjMjNmNTk0YzQ4MTYzNzExZDJl
M2FjZDUyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTE1Niw4ICsxMTU2
LDggQEAgSU5TUEVDVE9SX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAogICAgICQoSW5zcGVjdG9yU2Ny
aXB0cykvZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IFwKICAg
ICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVy
LnB5IFwKICAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkgXAotICAgICQoSW5zcGVjdG9yU2NyaXB0cykvZ2VuZXJhdGVf
dHlwZV9idWlsZGVyX2hlYWRlci5weSBcCi0gICAgJChJbnNwZWN0b3JTY3JpcHRzKS9nZW5lcmF0
ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQoSW5zcGVjdG9yU2NyaXB0
cykvZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IFwKKyAgICAkKEluc3BlY3RvclNj
cmlwdHMpL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IFwKICAgICAk
KEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgXAogICAgICQoSW5zcGVj
dG9yU2NyaXB0cykvZ2VuZXJhdG9yLnB5IFwKICAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVy
YXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JK
U1Byb3RvY29sVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yjg4YmI4MGI1NTMwNjRiMzJhYmQ4YWYxYWMy
YzQ3OWE0Mzg3ODc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oCkBAIC0wLDAgKzEs
NCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXNfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXNfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9y
SlNUeXBlQnVpbGRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3Bl
Y3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmYjk0OTRlMDQ2ODhlNjY3Zjc4MTU5Zjc0Y2ZkYWQwZDk4MTE0NDRhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzX2gKLSNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnNf
aAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
ZGJiYWNkMGQyNGRkZjY4MjY4NzE3Mjk4YjEzNjkxM2RkMmJjOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yUHJv
dG9jb2xUeXBlcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0
b3JQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yUHJvdG9jb2xU
eXBlc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZjllMTEzNTI2MjFhOTk0Yjc4NmQ2ODRlYzU0MDNhYTkyOTg2M2Ni
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX0luc3Bl
Y3RvclR5cGVCdWlsZGVyX2gKLSNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9yVHlwZUJ1aWxk
ZXJfaAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+Ci0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDY1N2RkMWEyZTU0MDUzYTY0OWUwOTNhYzcxZmMz
MjQzZjk0OTZmYzguLjQ3NDc1NGRkNjAxNzhlZWU4ODY5MjZiZGUyZGI2MmZjMTJjNjVjN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgpAQCAtMjEwMDQsNyArMjEwMDQsNyBAQCBfX1pUVk43V2ViQ29yZTE0
SW5zcGVjdG9yU3R5bGVFCiBfX1pUVk43V2ViQ29yZTE5SW5zcGVjdG9yU3R5bGVTaGVldEUKIF9f
WlRWTjdXZWJDb3JlMzNJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGVFCiBfX1pUVk43
V2ViQ29yZTIySW5zcGVjdG9yVGltZWxpbmVBZ2VudEUKLV9fWk43V2ViQ29yZTExVHlwZUJ1aWxk
ZXJMMjBlbnVtX2NvbnN0YW50X3ZhbHVlc0UKK19fWk43V2ViQ29yZThQcm90b2NvbEwyMGVudW1f
Y29uc3RhbnRfdmFsdWVzRQogX19aVFZON1dlYkNvcmUxOUluc3BlY3Rvck9iamVjdEJhc2VFCiBf
X1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQXJyYXlCYXNlRQogX19aVFZON1dlYkNvcmUxNEluc3Bl
Y3RvclZhbHVlRQpAQCAtMjM5OTYsNyArMjM5OTYsNyBAQCBfX19ibG9ja19saXRlcmFsX2dsb2Jh
bAogX19fYmxvY2tfZGVzY3JpcHRvcl90bXAKIF9fX2Jsb2NrX2Rlc2NyaXB0b3JfdG1wCiBfX19i
bG9ja19kZXNjcmlwdG9yX3RtcAotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5T
MF85TGF5ZXJUcmVlNUxheWVyRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBf
OUxheWVyVHJlZTVMYXllckVFRQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJhc2VBZ2VudElO
U18yM0luc3BlY3RvckxheWVyVHJlZUFnZW50RUVFCiBfX1pUVk43V2ViQ29yZTE1SW5zcGVjdG9y
T2JqZWN0RQogX19aWk43V2ViQ29yZUwyMGd1aWRGb3JPcmlnaW5BbmROYW1lRVJLTjNXVEY2U3Ry
aW5nRVMzX0UxNGN1cnJlbnROZXdHVUlECkBAIC0yNDA2MSwxMCArMjQwNjEsMTAgQEAgX19aVFZO
N1dlYkNvcmU1VGltZXJJTlNfMjBDYWNoZWRSZXNvdXJjZUxvYWRlckVFRQogX19aVFZOM1dURjIx
TWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjNKU0MxOVNvdXJjZVByb3ZpZGVyQ2FjaGVF
RUUKIF9fWlRWTjdXZWJDb3JlMjJDYW52YXNSZW5kZXJpbmdDb250ZXh0RQogX19aVFZON1dlYkNv
cmU5Q2xpcGJvYXJkRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF83UnVu
dGltZTEyUmVtb3RlT2JqZWN0RUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBf
N1J1bnRpbWUxMlJlbW90ZU9iamVjdEVFRQogX19aVFZON1dlYkNvcmUxOEluamVjdGVkU2NyaXB0
QmFzZUUKIF9fWlRWTjdXZWJDb3JlMTFTY3JpcHRWYWx1ZUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBl
QnVpbGRlcjVBcnJheUlOUzBfNFBhZ2UxMVNlYXJjaE1hdGNoRUVFCitfX1pUVk43V2ViQ29yZThQ
cm90b2NvbDVBcnJheUlOUzBfNFBhZ2UxMVNlYXJjaE1hdGNoRUVFCiBfX1pUVk43V2ViQ29yZTE1
Q29udGV4dEZlYXR1cmVzRQogX19aVFZON1dlYkNvcmUyMUNvbnRleHRGZWF0dXJlc0NsaWVudEUK
IF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE3Q1NT
UHJpbWl0aXZlVmFsdWVFRUUKQEAgLTI0MzYwLDcgKzI0MzYwLDcgQEAgX19aVFZOM1dURjIxTWVt
b3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJFRUUKIF9f
WlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE1R3JhcGhp
Y3NDb250ZXh0RUVFCiBfX1pUVk43V2ViQ29yZTVUaW1lcklOU18xMUV2ZW50U2VuZGVySU5TXzEx
SW1hZ2VMb2FkZXJFRUVFRQogX19aVFZON1dlYkNvcmUxNEluamVjdGVkU2NyaXB0RQotX19aVFZO
N1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF84RGVidWdnZXI5Q2FsbEZyYW1lRUVFCitf
X1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfOERlYnVnZ2VyOUNhbGxGcmFtZUVFRQog
X19aVFZON1dlYkNvcmUxMlNjcmlwdE9iamVjdEUKIF9fWlRWTjdXZWJDb3JlMjBJbmplY3RlZFNj
cmlwdE1vZHVsZUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43
V2ViQ29yZTEyUmVuZGVyT2JqZWN0RUVFCkBAIC0yNDM2OSw4ICsyNDM2OSw4IEBAIF9fWlRWTjNX
VEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTlJbmxpbmVCb3hFRUUK
IF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE0UmVu
ZGVyT3ZlcmZsb3dFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVy
SU43V2ViQ29yZTEzSW5saW5lVGV4dEJveEVFRQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJh
c2VBZ2VudElOU18xNEluc3BlY3RvckFnZW50RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxk
ZXI1QXJyYXlJTlMwXzE2QXBwbGljYXRpb25DYWNoZTI0QXBwbGljYXRpb25DYWNoZVJlc291cmNl
RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzE2QXBwbGljYXRpb25D
YWNoZTE3RnJhbWVXaXRoTWFuaWZlc3RFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5
SU5TMF8xNkFwcGxpY2F0aW9uQ2FjaGUyNEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUVFRQorX19a
VFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzE2QXBwbGljYXRpb25DYWNoZTE3RnJhbWVX
aXRoTWFuaWZlc3RFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMzBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnRFRUUKIF9fWk43V2ViQ29yZTI2SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIxMmNvbW1hbmROYW1lc0UKIF9fWlpON1dlYkNvcmUzMEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVySW1wbDhkaXNwYXRjaEVSS04zV1RGNlN0cmluZ0VFOGhhbmRsZXJz
CkBAIC0yNDM5MywxOSArMjQzOTMsMTkgQEAgX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0
aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTRJbnNwZWN0b3JTdGF0ZUVFRQogX19aVFZOM1dURjIxTWVt
b3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMjFJbmplY3RlZFNjcmlwdE1hbmFn
ZXJFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29y
ZTE5SW5zdHJ1bWVudGluZ0FnZW50c0VFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0
aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTRJbnNwZWN0b3JBZ2VudEVFRQotX19aVFZON1dlYkNvcmUx
MVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTNlJlZ2lvbkVFRQotX19aVFZON1dlYkNvcmUxMVR5
cGVCdWlsZGVyNUFycmF5SWlFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5T
MF8zQ1NTOVJ1bGVNYXRjaEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5T
MF8zQ1NTN0NTU1J1bGVFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBf
M0NTUzlOYW1lZEZsb3dFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOM1dU
RjZTdHJpbmdFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzE1
Q1NTUHJvcGVydHlJbmZvRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMw
XzNDU1MxOUNTU1N0eWxlU2hlZXRIZWFkZXJFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRl
cjVBcnJheUlOUzBfM0NTUzE5SW5oZXJpdGVkU3R5bGVFbnRyeUVFRQotX19aVFZON1dlYkNvcmUx
MVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMTVQc2V1ZG9JZE1hdGNoZXNFRUUKK19fWlRWTjdX
ZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zQ1NTNlJlZ2lvbkVFRQorX19aVFZON1dlYkNvcmU4
UHJvdG9jb2w1QXJyYXlJaUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NT
UzlSdWxlTWF0Y2hFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zQ1NTN0NT
U1J1bGVFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zQ1NTOU5hbWVkRmxv
d0VFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTjNXVEY2U3RyaW5nRUVFCitfX1pU
Vk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzE1Q1NTUHJvcGVydHlJbmZvRUVFCitf
X1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzE5Q1NTU3R5bGVTaGVldEhlYWRl
ckVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1MxOUluaGVyaXRlZFN0
eWxlRW50cnlFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zQ1NTMTVQc2V1
ZG9JZE1hdGNoZXNFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMTdJ
bnNwZWN0b3JDU1NBZ2VudEVFRQogX19aVFZON1dlYkNvcmU1VGltZXJJTlNfMjJVcGRhdGVSZWdp
b25MYXlvdXRUYXNrRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzND
U1MyMFNlbGVjdG9yUHJvZmlsZUVudHJ5RUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJh
eUlOUzBfM0NTUzIwU2VsZWN0b3JQcm9maWxlRW50cnlFRUUKIF9fWlRWTjdXZWJDb3JlMTVTZWxl
Y3RvclByb2ZpbGVFCiBfX1pUVk43V2ViQ29yZTE3SW5zcGVjdG9yQ1NTQWdlbnQxM0FkZFJ1bGVB
Y3Rpb25FCiBfX1pUVk43V2ViQ29yZTE3SW5zcGVjdG9yQ1NTQWdlbnQxNlN0eWxlU2hlZXRBY3Rp
b25FCkBAIC0yNDQxNCwxOSArMjQ0MTQsMTkgQEAgX19aVFZON1dlYkNvcmUxN0luc3BlY3RvckNT
U0FnZW50MjBUb2dnbGVQcm9wZXJ0eUFjdGlvbkUKIF9fWlRWTjdXZWJDb3JlMTdJbnNwZWN0b3JD
U1NBZ2VudDIxU2V0UHJvcGVydHlUZXh0QWN0aW9uRQogX19aVFZON1dlYkNvcmUxN0luc3BlY3Rv
ckNTU0FnZW50MjNTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbkUKIF9fWlRWTjdXZWJDb3JlMThJbnNw
ZWN0b3JCYXNlQWdlbnRJTlNfMjJJbnNwZWN0b3JEYXRhYmFzZUFnZW50RUVFCi1fX1pUVk43V2Vi
Q29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlNfMTRJbnNwZWN0b3JWYWx1ZUVFRQorX19aVFZON1dl
YkNvcmU4UHJvdG9jb2w1QXJyYXlJTlNfMTRJbnNwZWN0b3JWYWx1ZUVFRQogX19aTjdXZWJDb3Jl
TDEybmV4dFVudXNlZElkRQogX19aTjdXZWJDb3JlMjJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50MjBi
YWNrdHJhY2VPYmplY3RHcm91cEUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdX
cmFwcGVySU43V2ViQ29yZTE1SW5zcGVjdG9yT2JqZWN0RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJ
bnN0cnVtZW50YXRpb243V3JhcHBlcklOM0pTQzlFeGVjU3RhdGVFRUUKLV9fWlRWTjdXZWJDb3Jl
MTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfOERlYnVnZ2VyOExvY2F0aW9uRUVFCitfX1pUVk43V2Vi
Q29yZThQcm90b2NvbDVBcnJheUlOUzBfOERlYnVnZ2VyOExvY2F0aW9uRUVFCiBfX1pUVk43V2Vi
Q29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzIySW5zcGVjdG9yRGVidWdnZXJBZ2VudEVFRQot
X19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zRE9NMTNFdmVudExpc3RlbmVy
RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzNET000Tm9kZUVFRQor
X19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNET00xM0V2ZW50TGlzdGVuZXJFRUUK
K19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zRE9NNE5vZGVFRUUKIF9fWlRWTjdX
ZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMTdJbnNwZWN0b3JET01BZ2VudEVFRQogX19a
VFZON1dlYkNvcmU1VGltZXJJTlNfMjhSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrRUVFCiBf
X1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzI1SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMV9JTjNXVEY2
U3RyaW5nRUVFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMV9JTjNXVEY2U3Ry
aW5nRUVFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMjRJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnRFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdX
cmFwcGVySU43V2ViQ29yZTExU3RvcmFnZUFyZWFFRUUKIF9fWlRWTjdXZWJDb3JlNVRpbWVySU5T
XzI4SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoVGFza0VFRQpAQCAtMjQ0MzcsNDIgKzI0NDM3LDQy
IEBAIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE5
SGVhcEdyYXBoU2VyaWFsaXplckVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9u
N1dyYXBwZXJJTjdXZWJDb3JlMzFNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsRUVFCiBf
X1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUyNU1lbW9y
eUluc3RydW1lbnRhdGlvbkltcGxFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlv
bjdXcmFwcGVySU43V2ViQ29yZTIwSW5zcGVjdG9yTWVtb3J5QWdlbnRFRUUKLV9fWlRWTjdXZWJD
b3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfNk1lbW9yeTExTWVtb3J5QmxvY2tFRUUKK19fWlRW
TjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF82TWVtb3J5MTFNZW1vcnlCbG9ja0VFRQogX19a
VFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZUVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTlNfMTVB
cnJheUJ1ZmZlclZpZXdFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFw
cGVySU5TXzExQXJyYXlCdWZmZXJFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJh
eUlOUzBfNk1lbW9yeTEzTGlzdGVuZXJDb3VudEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWls
ZGVyNUFycmF5SU5TMF82TWVtb3J5OU5vZGVDb3VudEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVC
dWlsZGVyNUFycmF5SU5TMF82TWVtb3J5OERPTUdyb3VwRUVFCitfX1pUVk43V2ViQ29yZThQcm90
b2NvbDVBcnJheUlOUzBfNk1lbW9yeTEzTGlzdGVuZXJDb3VudEVFRQorX19aVFZON1dlYkNvcmU4
UHJvdG9jb2w1QXJyYXlJTlMwXzZNZW1vcnk5Tm9kZUNvdW50RUVFCitfX1pUVk43V2ViQ29yZThQ
cm90b2NvbDVBcnJheUlOUzBfNk1lbW9yeThET01Hcm91cEVFRQogX19aVFZOM1dURjIxTWVtb3J5
SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlN0ludFJlY3RFRUUKLV9fWlRWTjdXZWJD
b3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfNFBhZ2UxN0ZyYW1lUmVzb3VyY2VUcmVlRUVFCi1f
X1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzRQYWdlMTdGcmFtZVJlc291cmNl
VHJlZTlSZXNvdXJjZXNFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBf
NFBhZ2UxMlNlYXJjaFJlc3VsdEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5
SU5TMF80UGFnZTZDb29raWVFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF80
UGFnZTE3RnJhbWVSZXNvdXJjZVRyZWVFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5
SU5TMF80UGFnZTE3RnJhbWVSZXNvdXJjZVRyZWU5UmVzb3VyY2VzRUVFCitfX1pUVk43V2ViQ29y
ZThQcm90b2NvbDVBcnJheUlOUzBfNFBhZ2UxMlNlYXJjaFJlc3VsdEVFRQorX19aVFZON1dlYkNv
cmU4UHJvdG9jb2w1QXJyYXlJTlMwXzRQYWdlNkNvb2tpZUVFRQogX19aVFZON1dlYkNvcmUxOElu
c3BlY3RvckJhc2VBZ2VudElOU18xOEluc3BlY3RvclBhZ2VBZ2VudEVFRQogX19aVFZOM1dURjIx
TWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMThTY3JpcHRIZWFwU25hcHNo
b3RFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29y
ZTEzU2NyaXB0UHJvZmlsZUVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dy
YXBwZXJJTjdXZWJDb3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnRFRUUKLV9fWlRWTjdXZWJDb3Jl
MTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfOFByb2ZpbGVyMTNQcm9maWxlSGVhZGVyRUVFCitfX1pU
Vk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfOFByb2ZpbGVyMTNQcm9maWxlSGVhZGVyRUVF
CiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzIySW5zcGVjdG9yUHJvZmls
ZXJBZ2VudEVFRQogX19aVFZON1dlYkNvcmUxOVdvcmtlclByb2ZpbGVyQWdlbnRFCiBfX1pUVk43
V2ViQ29yZTE3UGFnZVByb2ZpbGVyQWdlbnRFCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFz
ZUFnZW50SU5TXzIySW5zcGVjdG9yUmVzb3VyY2VBZ2VudEVFRQotX19aVFZOM1dURjIxTWVtb3J5
SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjdOZXR3b3JrOUlu
aXRpYXRvckVFRQorX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdX
ZWJDb3JlOFByb3RvY29sN05ldHdvcms5SW5pdGlhdG9yRUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJ
bnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxM1hIUlJlcGxheURhdGFFRUUKIF9fWlRW
TjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTIyVGhyZWFkYWJs
ZUxvYWRlckNsaWVudEVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBw
ZXJJTjdXZWJDb3JlMjBOZXR3b3JrUmVzb3VyY2VzRGF0YUVFRQogX19aVFZON1dlYkNvcmUxOElu
c3BlY3RvckJhc2VBZ2VudElOU18yMUluc3BlY3RvclJ1bnRpbWVBZ2VudEVFRQogX19aVFZON1dl
YkNvcmUxNEluc3BlY3RvclN0YXRlRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5
SU5TMF8zQ1NTOENTU01lZGlhRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJ
TlMwXzNDU1MxNFNob3J0aGFuZEVudHJ5RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1
QXJyYXlJTlMwXzNDU1MxMUNTU1Byb3BlcnR5RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxk
ZXI1QXJyYXlJTlMwXzNDU1MyNENTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eUVFRQorX19aVFZON1dl
YkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1M4Q1NTTWVkaWFFRUUKK19fWlRWTjdXZWJDb3Jl
OFByb3RvY29sNUFycmF5SU5TMF8zQ1NTMTRTaG9ydGhhbmRFbnRyeUVFRQorX19aVFZON1dlYkNv
cmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1MxMUNTU1Byb3BlcnR5RUVFCitfX1pUVk43V2ViQ29y
ZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzI0Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5RUVFCiBf
X1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzIySW5zcGVjdG9yVGltZWxpbmVB
Z2VudEVFRQotX19aTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjdOZXR3b3JrOFJlc3BvbnNlOE1pbWVU
eXBlRQotX19aTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjNDU1MxMUNTU1Byb3BlcnR5OFByaW9yaXR5
RQotX19aTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjNDU1MxMUNTU1Byb3BlcnR5OFBhcnNlZE9rRQot
X19aTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjNDU1MxMUNTU1Byb3BlcnR5NlN0YXR1c0UKK19fWk43
V2ViQ29yZThQcm90b2NvbDdOZXR3b3JrOFJlc3BvbnNlOE1pbWVUeXBlRQorX19aTjdXZWJDb3Jl
OFByb3RvY29sM0NTUzExQ1NTUHJvcGVydHk4UHJpb3JpdHlFCitfX1pON1dlYkNvcmU4UHJvdG9j
b2wzQ1NTMTFDU1NQcm9wZXJ0eThQYXJzZWRPa0UKK19fWk43V2ViQ29yZThQcm90b2NvbDNDU1Mx
MUNTU1Byb3BlcnR5NlN0YXR1c0UKIF9fWk43V2ViQ29yZTIwSW5zcGVjdG9yV29ya2VyQWdlbnQy
MVdvcmtlckZyb250ZW5kQ2hhbm5lbDhzX25leHRJZEUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0
b3JCYXNlQWdlbnRJTlNfMjBJbnNwZWN0b3JXb3JrZXJBZ2VudEVFRQogX19aVFZON1dlYkNvcmUy
MEluc3BlY3RvcldvcmtlckFnZW50MjFXb3JrZXJGcm9udGVuZENoYW5uZWxFCkBAIC0yNjIzNyw3
ICsyNjIzNyw3IEBAIF9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE5aXNWaWRl
b1RyYWNrRW5hYmxlZEUKIF9fWlRWTjdXZWJDb3JlNlNjcmVlbkUKIF9fWlRWTjdXZWJDb3JlMjRT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXJFCiBfX1pUVk4zSlNDOVdlYWtHQ01hcElQdk5TXzhKU09i
amVjdEVOU18zM0RlZmF1bHRXZWFrR0NNYXBGaW5hbGl6ZXJDYWxsYmFja0lTMV9TMl9FRU4zV1RG
N1B0ckhhc2hJUzFfRUVOUzVfMTBIYXNoVHJhaXRzSVMxX0VFRUUKLV9fWlRWTjdXZWJDb3JlMTFU
eXBlQnVpbGRlcjVBcnJheUlOUzBfN0NvbnNvbGU5Q2FsbEZyYW1lRUVFCitfX1pUVk43V2ViQ29y
ZThQcm90b2NvbDVBcnJheUlOUzBfN0NvbnNvbGU5Q2FsbEZyYW1lRUVFCiBfX1pUVk43V2ViQ29y
ZTVUaW1lcklOU18xN1NjcmlwdERlYnVnU2VydmVyRUVFCiBfX1pUVk43V2ViQ29yZTVUaW1lcklO
U18yN1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5z
dHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTBGaWxlVGhyZWFkRUVFCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBmMGI5ZDBjMjZm
NWRkMDM5ZWZiZGMyMWYyY2M0YTU2N2U5ZTEyMmI1Li40NWVkZjcyMTkxNGY0ZjNkNmViNWE1NDNj
NDg4ZjUyNTNhOWQyZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKQEAgLTgwNSw3ICs4MDUsNyBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEhUTUxOYW1lcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJ
bnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMu
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdl
YkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5jcHAiPgogICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTgzMDksNyArMTgzMDksNyBAQCDv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rvck92ZXJsYXlQYWdlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5z
cGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVy
cy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3Jr
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0F0dHIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0JhclByb3AuaCIgLz4KQEAgLTE4ODY2LDggKzE4ODY2LDggQEAg77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3Bl
Y3RvclxJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckpTRnJvbnRl
bmREaXNwYXRjaGVycy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JQ
cm90b2NvbFR5cGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcU2NyaXB0QXJndW1lbnRzLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0
b3JcU2NyaXB0QnJlYWtwb2ludC5oIiAvPgpAQCAtMjEzODIsNCArMjEzODIsNCBAQCDvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRo
KVxCdWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBvcnRHcm91cD4K
LTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKaW5kZXggMzYwYjc5YTQ4Y2M0MGExZmI3YWFiNDZjMTlmNDJjOWQ2ODllMGUyZC4uNWUx
YzRlYzQ5NWYxNzFjNDgwODYyNTAwZjE1ZmZhZmM5YjQ2YTNkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
NTIwNiw3ICs1MjA2LDcgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgi
Pz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNw
ZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRT
b3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCI+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVj
dG9yV2ViUHJvdG9jb2xUeXBlcy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVy
aXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5jcHAiPgpAQCAtMTIzMTUsMTAgKzEyMzE1LDEw
IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xp
bnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JKU1R5cGVCdWlsZGVy
cy5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3Bl
Y3RvclxJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRp
bmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclR5
cGVCdWlsZGVyLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRl
cnNcaW5zcGVjdG9yXEluc3BlY3RvclByb3RvY29sVHlwZXMuaCI+CiAgICAgICA8RmlsdGVyPkZv
cndhcmRpbmdIZWFkZXJzXGluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3Bl
Y3RvclZhbHVlcy5oIj4KQEAgLTEzMTM2LDcgKzEzMTM2LDcgQEAg77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rvcldl
YlR5cGVCdWlsZGVycy5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgiPgogICAgICAgPEZpbHRlcj5E
ZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNBYnN0cmFjdFdvcmtlci5oIj4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMWFl
YWMyYTYxNTdhNWZkZTAxMzgzNzY1MGU1ODQ0NzA2NDkzMTgxLi45YmNkNDJjMGVkZTA5NzViZWJj
OGYxNDNlNjdhOTU2Y2U2ODA3YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDYwLDkgKzIwNjAsOSBAQAogCQk1M0VGNzY2
QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBB
NjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBB
MEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJD
QSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvcldlYlR5cGVCdWlsZGVycy5jcHAgKi87IH07CisJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJD
QSAvKiBJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNw
ZWN0b3JXZWJQcm90b2NvbFR5cGVzLmNwcCAqLzsgfTsKIAkJNTc4REEyMEUxNTIwRUI4QzAwNjE0
MUMxIC8qIEluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAv
KiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMxIC8q
IEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3Rvcldl
YlR5cGVCdWlsZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JXZWJQcm90b2Nv
bFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3Qjc5MUEz
MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQx
IC8qIENvbnRlbnREaXN0cmlidXRvci5jcHAgKi87IH07CiAJCTU3Qjc5MUE0MTRDNkE2MjkwMEYy
MDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlz
dHJpYnV0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1N0NGNDk3NDE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDRjQ5NzIxNEVFMzZE
NzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLzsgfTsKQEAgLTkxNzcsOCArOTE3Nyw4
IEBACiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJ
bnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVC
dWlsZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJU
eXBlQnVpbGRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTczRDEzNDUxNENF
MzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAv
KiBJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdCNzkxOUYxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTFBMDE0QzZBNjI5MDBG
MjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbnRlbnREaXN0cmlidXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zZXJ0aW9uUG9pbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNzksOCArMTUxNzksOCBAQAogCQkJCTRGNzA3QTk4
MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLywK
IAkJCQk0RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNw
YXRjaGVycy5jcHAgKi8sCiAJCQkJNEY0RjVGRkMxMUNCRDMwMTAwQTE4NkJGIC8qIEluc3BlY3Rv
cldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCAqLywKLQkJCQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FC
Q0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAqLywKLQkJCQk1NzNEMTM0NjE0Q0Uz
OUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmggKi8sCisJCQkJNTczRDEz
NDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwICovLAor
CQkJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVz
LmggKi8sCiAJCQkJQTU4NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElI
b3N0LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGlu
ZUFQSUhvc3QuaCAqLywKIAkJCQk3QTBFNzcxQzEwQzAwREIxMDBBMDI3NkUgLyogSlNJbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwICovLApAQCAtMjQ2MzQsNyArMjQ2MzQsNyBAQAogCQkJCUE1OTND
RjhCMTg0MDUzNTIwMEJGQ0UyNyAvKiBJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JXZWJCYWNrZW5k
RGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFD
MSAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9y
V2ViUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM4MTBDMUMxMzY1QTQ5NjAw
RUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzc1
Q0MwNzExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUYzQUJGRTBDMTMwRTlEQTAwMEU3RjdEMSAvKiBJbnN0cnVtZW50aW5nQWdl
bnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDcyLDcgKzI4MDcyLDcgQEAKIAkJCQk3NTQxMzNB
QTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0RjcwN0E5OTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2Vu
ZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGNEY1RkZCMTFDQkQyRTEwMEEx
ODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIElu
c3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM4MTBDMUIx
MzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUYzNTBCNzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJENDZGMDRFMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2lu
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggYjY4YjRjZTlkMjliNzkwYTMyOWNmMjI4NGEzNmI1NjZj
ZGI5MmMwZS4uNDUwMDg5NjFkMWIwNDMzZmUwMGYyZmRmNmI1YWE4ZmZmNGMyZmRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTk1
LDcgKzk1LDcgQEAgdm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmRpc2Nvbm5lY3QoKQogdm9pZCBD
b21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IG9iamVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpCiB7CiAgICAgaWYgKG1f
aW5zcGVjdG9yQWdlbnQpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0gQmluZGluZ1RyYWl0czxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChv
YmplY3QpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiByZW1vdGVPYmplY3QgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVDYXN0KG9iamVjdCk7CiAgICAgICAg
IG1faW5zcGVjdG9yQWdlbnQtPmluc3BlY3QocmVtb3RlT2JqZWN0LCBoaW50cy0+YXNPYmplY3Qo
KSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhYTkxZWIxYmFmYzE1ZDAx
ODYxNzgwYTA0ZjZlNmMyMDdkZmExNGJmLi42MTM0ZDdjMzgxMGJjNGQ0OGI0N2Q2YTQyM2E5NzA1
MWQ1YmNkNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtOTQsOSArOTQsOSBAQCB2b2lk
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUp
OwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0
aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhN
YW5pZmVzdD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFt
ZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6
RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKKyAgICByZXN1bHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFt
ZVdpdGhNYW5pZmVzdD46OmNyZWF0ZSgpOwogCiAgICAgRnJhbWUqIG1haW5GcmFtZSA9IG1fcGFn
ZUFnZW50LT5tYWluRnJhbWUoKTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQobWFpbkZyYW1lKSkgewpA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpn
ZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyCiAgICAgICAgIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8gaW5mbyA9IGhvc3QtPmFwcGxpY2F0aW9uQ2FjaGVJ
bmZvKCk7CiAgICAgICAgIFN0cmluZyBtYW5pZmVzdFVSTCA9IGluZm8ubV9tYW5pZmVzdC5zdHJp
bmcoKTsKICAgICAgICAgaWYgKCFtYW5pZmVzdFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdp
dGhNYW5pZmVzdD4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNh
Y2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6Y3JlYXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4gdmFs
dWUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5p
ZmVzdDo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAuc2V0RnJhbWVJZChtX3BhZ2VBZ2VudC0+
ZnJhbWVJZChmcmFtZSkpCiAgICAgICAgICAgICAgICAgLnNldE1hbmlmZXN0VVJMKG1hbmlmZXN0
VVJMKQogICAgICAgICAgICAgICAgIC5zZXRTdGF0dXMoc3RhdGljX2Nhc3Q8aW50Pihob3N0LT5z
dGF0dXMoKSkpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluCiAg
ICAgKm1hbmlmZXN0VVJMID0gaW5mby5tX21hbmlmZXN0LnN0cmluZygpOwogfQogCi12b2lkIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1l
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNo
ZT4mIGFwcGxpY2F0aW9uQ2FjaGUpCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mIGFwcGxpY2F0aW9uQ2FjaGUpCiB7CiAgICAg
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRM
b2FkZXIoZXJyb3JTdHJpbmcsIGZyYW1lSWQpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCkBA
IC0xNTEsOSArMTUxLDkgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Omdl
dEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyogZXIKICAgICBhcHBsaWNhdGlv
bkNhY2hlID0gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKHJlc291cmNlcywgaW5mbyk7
CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNo
ZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWls
ZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJl
c291cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMsIGNvbnN0IEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mIGFwcGxpY2F0aW9uQ2FjaGVJbmZvKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hl
PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRp
b25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYgYXBw
bGljYXRpb25DYWNoZVJlc291cmNlcywgY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hl
SW5mbyYgYXBwbGljYXRpb25DYWNoZUluZm8pCiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZSgpCisg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChhcHBsaWNhdGlvbkNh
Y2hlSW5mby5tX21hbmlmZXN0LnN0cmluZygpKQogICAgICAgICAuc2V0U2l6ZShhcHBsaWNhdGlv
bkNhY2hlSW5mby5tX3NpemUpCiAgICAgICAgIC5zZXRDcmVhdGlvblRpbWUoYXBwbGljYXRpb25D
YWNoZUluZm8ubV9jcmVhdGlvblRpbWUpCkBAIC0xNjIsOSArMTYyLDkgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hl
PiBJbnNwZWN0b3IKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlv
bkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VzKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0
JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+PiByZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gcmVzb3VyY2VzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlc291
cmNlSW5mbyA6IGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCiAgICAgICAgIHJlc291cmNlcy0+
YWRkSXRlbShidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShyZXNvdXJjZUlu
Zm8pKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaAogICAgIHJl
dHVybiByZXNvdXJjZXM7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mIHJlc291cmNlSW5mbykK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpSZXNvdXJjZUluZm8mIHJlc291cmNlSW5mbykKIHsKICAgICBTdHJpbmdCdWlsZGVyIHR5
cGVzOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEkKICAgICBp
ZiAocmVzb3VyY2VJbmZvLm1faXNFeHBsaWNpdCkKICAgICAgICAgdHlwZXMuYXBwZW5kTGl0ZXJh
bCgiRXhwbGljaXQgIik7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiB2YWx1ZSA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25D
YWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiB2YWx1ZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldFVybChyZXNvdXJjZUluZm8ubV9yZXNvdXJjZS5zdHJpbmcoKSkKICAgICAg
ICAgLnNldFNpemUoc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUluZm8ubV9zaXplKSkKICAgICAg
ICAgLnNldFR5cGUodHlwZXMudG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggYTlj
NzY0Mjg4NzEyNWQ3Y2I3MGRhNTBhOTI0NTk3MTYxZjNmOGQxZi4uYWU5NGQwMjE0N2RhMjMyMjM5
ZTE5ODFkZmVlZDBiNjg3NWVjYmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtNjIsMTQgKzYy
LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNh
Y2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6
OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IFN0cmluZyogbWFuaWZlc3RVUkwpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBcHBs
aWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRBcHBsaWNhdGlvbkNh
Y2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gYnVpbGRPYmplY3RGb3JB
cHBsaWNhdGlvbkNhY2hlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9M
aXN0JiwgY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYpOwotICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gYnVpbGRBcnJh
eUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OlJlc291cmNlSW5mb0xpc3QmKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gYnVpbGRPYmpl
Y3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OlJlc291cmNlSW5mbyYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBw
bGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlv
bkNhY2hlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiwgY29u
c3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyYpOworICAgIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25D
YWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gYnVpbGRBcnJheUZvckFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xp
c3QmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYpOwog
CiAgICAgRG9jdW1lbnRMb2FkZXIqIGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKEVycm9y
U3RyaW5nKiwgU3RyaW5nIGZyYW1lSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAxNjlkMzdjYjJlMjc0ZTYxZWIwMTJmNDI3MTEw
OTg5YmU5ZTE0MzA3Li4yMWU5OTU1YWQ5NjMzZTUxMjU0NTYwNzY2ZmQyMGM1YjY0ODczNDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNs
dWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNjAwLDcg
KzYwMCw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVu
dCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsCiAgICAgfQogfQogCi12b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wq
IGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Oklu
aGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykKK3ZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVk
ZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRN
YXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhl
cml0ZWRFbnRyaWVzKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJy
b3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNjEzLDExICs2MTMsMTEg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KIAogICAgIC8vIFBzZXVkbyBlbGVtZW50cy4KICAg
ICBpZiAoIWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1ZGVQc2V1ZG8pIHsKLSAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6UHNldWRvSWRNYXRjaGVzPj4gcHNldWRvRWxlbWVudHMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz46
OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiBwc2V1ZG9FbGVtZW50cyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNl
dWRvSWRNYXRjaGVzPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoUHNldWRvSWQgcHNldWRvSWQg
PSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwgQUZURVJfTEFTVF9JTlRFUk5BTF9Q
U0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNfY2FzdDxQc2V1ZG9JZD4ocHNldWRvSWQgKyAxKSkg
ewogICAgICAgICAgICAgYXV0byBtYXRjaGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLnBzZXVkb1N0
eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBTdHlsZVJlc29sdmVyOjpBbGxD
U1NSdWxlcyk7CiAgICAgICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9J
ZE1hdGNoZXM+IG1hdGNoZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlczo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+IG1hdGNoZXMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAgLnNl
dFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRvSWQpKQogICAgICAgICAgICAgICAgICAg
ICAuc2V0TWF0Y2hlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KG1hdGNoZWRSdWxlcywg
c3R5bGVSZXNvbHZlciwgZWxlbWVudCkpOwogICAgICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRz
LT5hZGRJdGVtKG1hdGNoZXMucmVsZWFzZSgpKTsKQEAgLTYyOSwxMiArNjI5LDEyIEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vCiAKICAgICAvLyBJbmhlcml0ZWQgc3R5bGVzLgogICAgIGlmICgh
aW5jbHVkZUluaGVyaXRlZCB8fCAqaW5jbHVkZUluaGVyaXRlZCkgewotICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4gZW50cmllcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT46
OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4gZW50cmllcyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJp
dGVkU3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50
ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICB3aGlsZSAocGFyZW50RWxlbWVu
dCkgewogICAgICAgICAgICAgU3R5bGVSZXNvbHZlciYgcGFyZW50U3R5bGVSZXNvbHZlciA9IHBh
cmVudEVsZW1lbnQtPmRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpOwogICAgICAgICAg
ICAgYXV0byBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLnN0eWxlUnVs
ZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsK
LSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRl
ZFN0eWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0
ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAg
LnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1h
dGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgcGFyZW50RWxlbWVudCkpOwogICAgICAgICAgICAg
aWYgKHBhcmVudEVsZW1lbnQtPnN0eWxlKCkgJiYgcGFyZW50RWxlbWVudC0+c3R5bGUoKS0+bGVu
Z3RoKCkpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGUqIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50RWxlbWVudCk7CkBA
IC02NTAsNyArNjUwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICB9CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXNTdHlsZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGlubGlu
ZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJp
YnV0ZXNTdHlsZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9y
U3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTY2MSwxMSArNjYxLDExIEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kCiAgICAgICAgIHJldHVybjsKIAogICAgIGlubGluZVN0
eWxlID0gc3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShlbGVtZW50LT5zdHlsZSgpKTsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYXR0cmli
dXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKGVsZW1lbnQpOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBhdHRyaWJ1dGVzID0gYnVpbGRP
YmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCk7CiAgICAgYXR0cmlidXRlc1N0eWxlID0g
YXR0cmlidXRlcyA/IGF0dHJpYnV0ZXMucmVsZWFzZSgpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+
PiYgc3R5bGUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9k
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5
bGVQcm9wZXJ0eT4+JiBzdHlsZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZv
cklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTY3Niw5ICs2
NzYsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgIHN0eWxlID0gaW5zcGVjdG9yU3R5
bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVT
aGVldEhlYWRlcj4+JiBzdHlsZUluZm9zKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxs
U3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxl
SW5mb3MpCiB7Ci0gICAgc3R5bGVJbmZvcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0
ZSgpOworICAgIHN0eWxlSW5mb3MgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKICAgICBW
ZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMgPSBtX2RvbUFnZW50LT5kb2N1bWVudHMoKTsKICAg
ICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+OjppdGVyYXRvciBpdCA9IGRvY3VtZW50cy5iZWdpbigp
OyBpdCAhPSBkb2N1bWVudHMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgU3R5bGVTaGVldExpc3Qq
IGxpc3QgPSAoKml0KS0+c3R5bGVTaGVldHMoKTsKQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0
Qm9keT4mIHN0eWxlU2hlZXRPYmplY3QpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHls
ZVNoZWV0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYg
c3R5bGVTaGVldE9iamVjdCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JT
dHlsZVNoZWV0ID0gYXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0
SWQpOwogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKQEAgLTcxOSw3ICs3MTksNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFn
ZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0
U3R5bGVUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQogewogICAg
IEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VSVCghY29t
cG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJp
bmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVs
bFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3Zl
cndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJl
c3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJ
ZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQogewog
ICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VSVCgh
Y29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JT
dHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBm
dWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3Rv
ckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgs
IGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+
JiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsU3R5bGVJZCk7
CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CkBAIC03NjcsNyArNzY3LDcgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW4KICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01B
Z2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiBmdWxsUnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQordm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxSdWxlSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+JiByZXN1
bHQpCiB7CiAgICAgSW5zcGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsUnVsZUlkKTsKICAgICBB
U1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTc4NCw3ICs3ODQsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBSZWZQdHI8SQogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBT
dHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0
KQogewogICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5n
LCBjb250ZXh0Tm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCkBAIC04MTAsMTIgKzgxMCwxMiBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgaW50IGNvbnRleHROb2RlSQogICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQt
PmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3Bl
cnR5SW5mbz4+JiBjc3NQcm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3Vw
cG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiBj
c3NQcm9wZXJ0aWVzKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+IHByb3BlcnRp
ZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5m
bz4+IHByb3BlcnRpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOwogICAgIGZvciAoaW50IGkg
PSBmaXJzdENTU1Byb3BlcnR5OyBpIDw9IGxhc3RDU1NQcm9wZXJ0eTsgKytpKSB7CiAgICAgICAg
IENTU1Byb3BlcnR5SUQgaWQgPSBjb252ZXJ0VG9DU1NQcm9wZXJ0eUlEKGkpOwotICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3Bl
cnR5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm86OmNyZWF0
ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5
SW5mbz4gcHJvcGVydHkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5m
bzo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKGdldFByb3BlcnR5TmFtZVN0cmluZyhp
ZCkpOwogCiAgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9
IHNob3J0aGFuZEZvclByb3BlcnR5KGlkKTsKQEAgLTgyMyw3ICs4MjMsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVm
UHRyPEluc3BlY3RvcgogICAgICAgICAgICAgcHJvcGVydGllcy0+YWRkSXRlbShwcm9wZXJ0eS5y
ZWxlYXNlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGxvbmdoYW5kcyA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gbG9uZ2hhbmRzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaiA9IDA7IGogPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraikgewogICAgICAgICAg
ICAgQ1NTUHJvcGVydHlJRCBsb25naGFuZElEID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXTsK
ICAgICAgICAgICAgIGxvbmdoYW5kcy0+YWRkSXRlbShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcobG9u
Z2hhbmRJRCkpOwpAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZv
cmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiAg
ICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUlt
bWVkaWF0ZWx5KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29s
bGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5h
bWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnRO
b2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlk
KTsKICAgICBpZiAoIWRvY3VtZW50KQpAQCAtODYzLDcgKzg2Myw3IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgZG9jCiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5hZGQoZG9jdW1l
bnROb2RlSWQpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+PiBuYW1lZEZs
b3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygpOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz4+IG5hbWVkRmxvd3MgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6Ok5hbWVkRmxvdz4+IG5hbWVkRmxvd3MgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwogCiAgICAg
Zm9yIChWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+OjppdGVyYXRvciBpdCA9IG5hbWVk
Rmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkK
ICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJv
clN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwpAQCAtODgwLDcgKzg4MCw3IEBA
IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFz
SW5zcGVjdG9yU3R5bGVTaGVldChFbGVtCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBTdHJpbmcgbmV3U3R5bGVTaGVldElkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0U3R5
bGVTaGVldElkKyspOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlPiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwg
ZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpS
ZWd1bGFyLCB0aGlzKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQs
IGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVn
dWxhciwgdGhpcyk7CiAgICAgICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5ld1N0
eWxlU2hlZXRJZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAgIG1fbm9kZVRvSW5zcGVj
dG9yU3R5bGVTaGVldC5zZXQoZWxlbWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAg
IHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOwpAQCAtOTEyLDcgKzkxMiw3IEBAIGlu
dCBJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBkb2N1bWVudE5vZGVJZDsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Y29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+KiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVj
dG9yU3R5bGVTaGVldCA9IGJpbmRTdHlsZVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQq
PihzdHlsZVNoZWV0KSk7CiAgICAgcmVzdWx0LT5hZGRJdGVtKGluc3BlY3RvclN0eWxlU2hlZXQt
PmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKSk7CkBAIC05ODMsNyArOTgzLDcgQEAgSW5z
cGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OnZpYUluc3BlY3RvclN0eWxlU2hl
ZXQoRG9jdW1lbnQqIGRvY3VtZW4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTdHJp
bmcgaWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RTdHlsZVNoZWV0SWQrKyk7Ci0gICAgaW5zcGVj
dG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShtX2RvbUFnZW50LT5w
YWdlQWdlbnQoKSwgaWQsIGNzc1N0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1l
bnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKKyAgICBpbnNwZWN0b3JTdHlsZVNoZWV0ID0g
SW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBpZCwg
Y3NzU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2lu
OjpJbnNwZWN0b3IsIEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhkb2N1bWVu
dCksIHRoaXMpOwogICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGlkLCBpbnNwZWN0
b3JTdHlsZVNoZWV0KTsKICAgICBtX2Nzc1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hlZXQu
c2V0KGNzc1N0eWxlU2hlZXQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwogICAgIG1fZG9jdW1lbnRU
b0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGRvY3VtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsK
QEAgLTEwMDAsMjIgKzEwMDAsMjIgQEAgSW5zcGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9yQ1NT
QWdlbnQ6OmFzc2VydFN0eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyogZXJyb3IKICAgICByZXR1
cm4gaXQtPnZhbHVlLmdldCgpOwogfQogCi1JbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0
eWxlU2hlZXRPcmlnaW4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmRldGVjdE9yaWdpbihDU1NTdHlsZVNo
ZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCitJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmRldGVj
dE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQpCiB7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdp
bjo6UmVndWxhcjsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW4gb3JpZ2luID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpS
ZWd1bGFyOwogICAgIGlmIChwYWdlU3R5bGVTaGVldCAmJiAhcGFnZVN0eWxlU2hlZXQtPm93bmVy
Tm9kZSgpICYmIHBhZ2VTdHlsZVNoZWV0LT5ocmVmKCkuaXNFbXB0eSgpKQotICAgICAgICBvcmln
aW4gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJB
Z2VudDsKKyAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNo
ZWV0T3JpZ2luOjpVc2VyQWdlbnQ7CiAgICAgZWxzZSBpZiAocGFnZVN0eWxlU2hlZXQgJiYgcGFn
ZVN0eWxlU2hlZXQtPm93bmVyTm9kZSgpICYmIHBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKS0+
bm9kZU5hbWUoKSA9PSAiI2RvY3VtZW50IikKLSAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOworICAgICAgICBvcmlnaW4g
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXI7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIHZpYUluc3BlY3RvclN0eWxlU2hl
ZXRGb3JPd25lciA9IHZpYUluc3BlY3RvclN0eWxlU2hlZXQob3duZXJEb2N1bWVudCwgZmFsc2Up
OwogICAgICAgICBpZiAodmlhSW5zcGVjdG9yU3R5bGVTaGVldEZvck93bmVyICYmIHBhZ2VTdHls
ZVNoZWV0ID09IHZpYUluc3BlY3RvclN0eWxlU2hlZXRGb3JPd25lci0+cGFnZVN0eWxlU2hlZXQo
KSkKLSAgICAgICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yOworICAgICAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpJbnNwZWN0b3I7CiAgICAgfQogICAg
IHJldHVybiBvcmlnaW47CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxl
UnVsZSogc3R5bGVSdWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50Ojpi
dWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiBzdHlsZVJ1bGUsIFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIpCiB7CiAgICAgaWYgKCFzdHlsZVJ1bGUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEYKICAgICBy
ZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldCA/IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2Jq
ZWN0Rm9yUnVsZShjc3NvbVdyYXBwZXIpIDogbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWls
ZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZv
clJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQogewogICAgIGlmICghcnVsZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMDM5LDE1ICsxMDM5LDE1IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmpl
Y3RGCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0
LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkgOiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVs
ZUxpc3QqIHJ1bGVMaXN0KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCkKIHsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVs
ZT4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOwogICAgIGlmICghcnVsZUxpc3QpCiAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6
ZSA9IHJ1bGVMaXN0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBDU1NTdHls
ZVJ1bGUqIHJ1bGUgPSBhc0NTU1N0eWxlUnVsZShydWxlTGlzdC0+aXRlbShpKSk7Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3Qg
PSBidWlsZE9iamVjdEZvclJ1bGUocnVsZSk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUocnVs
ZSk7CiAgICAgICAgIGlmICghcnVsZU9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICByZXN1bHQtPmFkZEl0ZW0ocnVsZU9iamVjdCk7CkBAIC0xMDU1LDE4ICsxMDU1LDE4IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0K
IAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5
Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mIG1hdGNo
ZWRSdWxlcywgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCogZWxlbWVudCkK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNo
ZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZXMs
IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6UnVsZU1hdGNoPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUoKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpSdWxlTWF0Y2g+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRSdWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBp
ZiAoIW1hdGNoZWRSdWxlc1tpXS0+aXNTdHlsZVJ1bGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBTdHlsZVJ1bGUqIG1hdGNoZWRTdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxTdHls
ZVJ1bGUqPihtYXRjaGVkUnVsZXNbaV0uZ2V0KCkpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JS
dWxlKG1hdGNoZWRTdHlsZVJ1bGUsIHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RG
b3JSdWxlKG1hdGNoZWRTdHlsZVJ1bGUsIHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICBpZiAoIXJ1
bGVPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+IG1hdGNoaW5nU2VsZWN0b3JzID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IG1hdGNoZWRTdHlsZVJ1bGUtPnNlbGVjdG9yTGlzdCgp
OwogICAgICAgICBsb25nIGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0g
Q1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewpAQCAtMTA3NSw3ICsxMDc1LDcgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4KICAgICAgICAgICAgICAgICBtYXRjaGluZ1NlbGVjdG9y
cy0+YWRkSXRlbShpbmRleCk7CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9Ci0gICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4gbWF0Y2gg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaDo6Y3JlYXRlKCkKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPiBtYXRjaCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoOjpjcmVhdGUoKQogICAgICAgICAgICAg
LnNldFJ1bGUocnVsZU9iamVjdCkKICAgICAgICAgICAgIC5zZXRNYXRjaGluZ1NlbGVjdG9ycyht
YXRjaGluZ1NlbGVjdG9ycyk7CiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShtYXRjaCk7CkBAIC0x
MDg0LDcgKzEwODQsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPgogICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZShFbGVtZW50KiBlbGVtZW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVz
U3R5bGUoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQtPmlzU3R5bGVkRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMDEsMjIgKzExMDEsMjIgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0
b3JDU1NBZ2VudDo6YnVpbGRPYmplY3QKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGUtPmJ1aWxk
T2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNT
U0FnZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZWdpb25MaXN0LCBpbnQg
ZG9jdW1lbnROb2RlSWQpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gcmVnaW9ucyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVn
aW9uPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gcmVnaW9ucyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaW9uTGlzdC0+bGVuZ3RoKCk7ICsr
aSkgewotICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9u
T3ZlcnNldCByZWdpb25PdmVyc2V0OworICAgICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldCByZWdpb25PdmVyc2V0OwogCiAgICAgICAgIHN3aXRjaCAo
dG9FbGVtZW50KHJlZ2lvbkxpc3QtPml0ZW0oaSkpLT5yZWdpb25PdmVyc2V0U3RhdGUoKSkgewog
ICAgICAgICBjYXNlIFJlZ2lvbkZpdDoKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OworICAg
ICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9u
OjpSZWdpb25PdmVyc2V0OjpGaXQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBS
ZWdpb25FbXB0eToKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6RW1wdHk7CisgICAgICAgICAgICBy
ZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OlJlZ2lvbk92
ZXJzZXQ6OkVtcHR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVnaW9uT3Zl
cnNldDoKLSAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6T3ZlcnNldDsKKyAgICAgICAgICAgIHJlZ2lv
bk92ZXJzZXQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNl
dDo6T3ZlcnNldDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlZ2lvblVuZGVm
aW5lZDoKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OlJlZ2lvbj4+IEkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiByZWdpb24g
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6Y3JlYXRlKCkKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPiByZWdpb24gPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRSZWdp
b25PdmVyc2V0KHJlZ2lvbk92ZXJzZXQpCiAgICAgICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3
YXMgcHJldmlvdXNseSBhc3NlcnRlZAogICAgICAgICAgICAgLnNldE5vZGVJZChtX2RvbUFnZW50
LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkLCByZWdpb25M
aXN0LT5pdGVtKGkpKSk7CkBAIC0xMTM2LDE3ICsxMTM2LDE3IEBAIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdp
b24+PiBJCiAgICAgcmV0dXJuIHJlZ2lvbnMucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBXZWJLaXRO
YW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgV2ViS2l0
TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKIHsKICAgICBS
ZWZQdHI8Tm9kZUxpc3Q+IGNvbnRlbnRMaXN0ID0gd2Via2l0TmFtZWRGbG93LT5nZXRDb250ZW50
KCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+IGNvbnRl
bnQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gY29udGVudCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvbnRlbnRMaXN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIC8vIGRvY3Vt
ZW50Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCiAgICAgICAgIGNvbnRlbnQtPmFkZEl0
ZW0obV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5v
ZGVJZCwgY29udGVudExpc3QtPml0ZW0oaSkpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXREb2N1bWVudE5vZGVJ
ZChkb2N1bWVudE5vZGVJZCkKICAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93LT5uYW1l
KCkuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+b3ZlcnNl
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRl
eCAxNzU1ZDcyMGMzMTVlMmVkOGMxZGE2MDRmMjA1ZjZiYmRlOWQwMTVlLi5lZGNhZjE3MmU1MjRk
NmI5YTgyMWFmMjE3ZTJkYWRhNzQ2NDA4YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMTA5LDIxICsxMDksMjEgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCosIFdlYktp
dE5hbWVkRmxvdyosIE5vZGUqIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1l
bnQgPSBudWxscHRyKTsKICAgICB2b2lkIGRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyosIE5vZGUqIGNvbnRlbnRFbGVtZW50KTsK
IAotICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NT
dHlsZT4mIGF0dHJpYnV0ZXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRNYXRjaGVk
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1
ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRj
aD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9J
ZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmll
cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZVNoZWV0SW5mb3MpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlU2hlZXRCb2R5PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRl
SW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1h
dGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVy
aXRlZEVudHJpZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0
cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9z
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZWV0SWQsIFN0cmluZyogcmVzdWx0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5
bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29u
c3QgU3RyaW5nJiB0ZXh0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYg
c3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRl
eHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVByb3Bl
cnR5KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5nKiwgaW50IGNv
bnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHlJbmZvPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFN0
eWxlVGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9w
ZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9y
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250ZXh0
Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+
JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGNsYXNz
IFN0eWxlU2hlZXRBY3Rpb247CkBAIC0xNDQsMjAgKzE0NCwyMCBAQCBwcml2YXRlOgogICAgIElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVs
ZW1lbnQqIGVsZW1lbnQpOwogICAgIEVsZW1lbnQqIGVsZW1lbnRGb3JJZChFcnJvclN0cmluZyos
IGludCBub2RlSWQpOwogICAgIGludCBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChE
b2N1bWVudCopOwotICAgIHZvaWQgY29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqLCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI+Kik7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVTaGVldHMoQ1NT
U3R5bGVTaGVldCosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKIAogICAgIEluc3BlY3RvclN0eWxlU2hl
ZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKICAgICBJbnNwZWN0b3JTdHlsZVNo
ZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiwgYm9vbCBjcmVhdGVJZkFic2Vu
dCk7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVT
aGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwotCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1
bGUqLCBTdHlsZVJlc29sdmVyJik7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlz
dCopOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1
bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwg
RWxlbWVudCopOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOwotICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyosIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOwotICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9yTmFt
ZWRGbG93KEVycm9yU3RyaW5nKiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlk
KTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gZGV0ZWN0
T3JpZ2luKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCk7CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVs
ZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RG
b3JSdWxlKENTU1N0eWxlUnVsZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gYnVpbGRBcnJheUZv
clJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJy
YXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0
eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50
Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IGJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5n
KiwgUGFzc1JlZlB0cjxOb2RlTGlzdD4sIGludCBkb2N1bWVudE5vZGVJZCk7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JO
YW1lZEZsb3coRXJyb3JTdHJpbmcqLCBXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2Rl
SWQpOwogCiAgICAgLy8gSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0
aW9uCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURvY3VtZW50KERvY3VtZW50Kikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCBiMmNiNGM2NDBkNjVlZjU0MzU4MzZmZmY1N2UzZTQzYzcwN2Y2MWM3Li5jYjdlN2RhNWRk
MmIzYzdjOWYxOTNjMDk2MDg5MTRhZTE3YTJiZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCBJbnNwZWN0
b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKICAgICBBU1NFUlQoIW1fc2VhcmNoaW5n
Rm9yTm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01CYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKQEAgLTQyMiw3ICs0
MjIsNyBAQCBFbGVtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWRpdGFibGVFbGVtZW50
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4mIHJvb3QpCit2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+JiByb290KQogewogICAg
IG1fZG9jdW1lbnRSZXF1ZXN0ZWQgPSB0cnVlOwogCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQsIGlu
dCBkZXB0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBj
aGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9k
ZU1hcCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNo
aWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
c2V0Q2hpbGROb2Rlcyhub2RlSWQsIGNoaWxkcmVuLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTU0MCw3
ICs1NDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29ucwogICAgICAgICAqZWxlbWVudElkID0g
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChlbGVtZW50LmdldCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1
ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGlu
dD4+JiByZXN1bHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcs
IG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICByZXN1bHQgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBub2Rlcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgcmVzdWx0LT5h
ZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZXMtPml0ZW0oaSkpKTsKQEAgLTU4OCw3
ICs1ODgsNyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
Tm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gc3RkOjptYWtlX3Vu
aXF1ZTxOb2RlVG9JZE1hcD4oKTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFwLmdl
dCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFwLnJl
bGVhc2UoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgp
OwogICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUs
IDAsIGRhbmdsaW5nTWFwKSk7CiAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0
Q2hpbGROb2RlcygwLCBjaGlsZHJlbik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTgwOSw5ICs4
MDksOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgIG1fZG9tRWRpdG9yLT5yZXBsYWNl
V2hvbGVUZXh0KHRvVGV4dChub2RlKSwgdmFsdWUsIGVycm9yU3RyaW5nKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRP
TTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+PiYg
bGlzdGVuZXJzQXJyYXkpCiB7Ci0gICAgbGlzdGVuZXJzQXJyYXkgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+
OjpjcmVhdGUoKTsKKyAgICBsaXN0ZW5lcnNBcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOwog
ICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlm
ICghbm9kZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExp
c3RlbmVySW5mbz4mCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBY2Nl
c3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5
UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFj
Y2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQ
cm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVzKQogewogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2Rl
KGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKQEAgLTkyNiw3ICs5MjYsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB3aAogICAgICpyZXN1bHRDb3VudCA9IHJlc3VsdHNWZWN0
b3Iuc2l6ZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRz
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZy
b21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxpbnQ+PiYgbm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3Vs
dHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQg
ZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PGludD4+JiBub2RlSWRzKQogewogICAgIFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIGl0ID0gbV9z
ZWFyY2hSZXN1bHRzLmZpbmQoc2VhcmNoSWQpOwogICAgIGlmIChpdCA9PSBtX3NlYXJjaFJlc3Vs
dHMuZW5kKCkpIHsKQEAgLTk0MCw3ICs5NDAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpn
ZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgIG5vZGVJZHMgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZnJvbUluZGV4
OyBpIDwgdG9JbmRleDsgKytpKQogICAgICAgICBub2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQoKGl0LT52YWx1ZSlbaV0uZ2V0KCkpKTsKIH0KQEAgLTExODYsNyArMTE4Niw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCkKICAgICBlbGVtZW50LT5mb2N1cygpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpCiB7CiAgICAgU3RyaW5nIG9i
amVjdEdyb3VwTmFtZSA9IG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogIiI7CiAgICAgTm9k
ZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpAQCAtMTE5NCw3ICsxMTk0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBjb25zdAogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSB3aXRoIGdp
dmVuIGlkIGZvdW5kIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3QgPSByZXNvbHZl
Tm9kZShub2RlLCBvYmplY3RHcm91cE5hbWUpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdCA9IHJlc29sdmVOb2RlKG5vZGUsIG9i
amVjdEdyb3VwTmFtZSk7CiAgICAgaWYgKCFvYmplY3QpIHsKICAgICAgICAgKmVycm9yU3RyaW5n
ID0gIk5vZGUgd2l0aCBnaXZlbiBpZCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGRvY3VtZW50IjsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTIwMiw3ICsxMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zdAogICAgIHJlc3VsdCA9IG9iamVjdDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
Z2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KQordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYg
cmVzdWx0KQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhc3NlcnRFbGVtZW50KGVycm9yU3Ry
aW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTEyMzMsNyArMTIzMyw3IEBAIHN0
YXRpYyBTdHJpbmcgZG9jdW1lbnRCYXNlVVJMU3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICByZXR1cm4gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIiKS5zdHJpbmcoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCog
bm9kZXNNYXApCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZGVwdGgs
IE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKIHsKICAgICBpbnQgaWQgPSBiaW5kKG5vZGUsIG5vZGVz
TWFwKTsKICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMjYyLDcgKzEyNjIsNyBAQCBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPiB2YWx1ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZTo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldE5vZGVJZChpZCkKICAgICAgICAgLnNldE5vZGVUeXBlKHN0YXRp
Y19jYXN0PGludD4obm9kZS0+bm9kZVR5cGUoKSkpCiAgICAgICAgIC5zZXROb2RlTmFtZShub2Rl
TmFtZSkKQEAgLTEyNzIsNyArMTI3Miw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOCiAgICAg
aWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIGludCBub2RlQ291bnQgPSBp
bm5lckNoaWxkTm9kZUNvdW50KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0Q2hpbGROb2RlQ291
bnQobm9kZUNvdW50KTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gYnVpbGRB
cnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2Rl
LCBkZXB0aCwgbm9kZXNNYXApOwogICAgICAgICBpZiAoY2hpbGRyZW4tPmxlbmd0aCgpID4gMCkK
ICAgICAgICAgICAgIHZhbHVlLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOwogICAg
IH0KQEAgLTEyOTEsNyArMTI5MSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOCiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3Qo
KSkgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IHNoYWRvd1Jvb3RzID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gc2hhZG93Um9vdHMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUo
KTsKICAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShy
b290LCAwLCBub2Rlc01hcCkpOwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKHNo
YWRvd1Jvb3RzKTsKICAgICAgICAgfQpAQCAtMTMyOSw5ICsxMzI5LDkgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvck4KICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVtZW50KQogewot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBhdHRyaWJ1
dGVzVmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gYXR0cmli
dXRlc1ZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAgICAgLy8gR28gdGhyb3VnaCBhbGwgYXR0cmlidXRlcyBhbmQgc2VyaWFsaXplIHRoZW0uCiAg
ICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzVmFsdWUucmVsZWFzZSgpOwpAQCAtMTM0Myw5ICsxMzQzLDkgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRBcnJheUYKICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJlbGVhc2UoKTsKIH0KIAotUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5l
ckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNN
YXApCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFp
bmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rl
c01hcCkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUo
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICBpZiAoZGVwdGgg
PT0gMCkgewogICAgICAgICAvLyBTcGVjaWFsLWNhc2UgdGhlIG9ubHkgdGV4dCBjaGlsZCAtIHBy
ZXRlbmQgdGhhdCBjb250YWluZXIncyBjaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVkLgogICAg
ICAgICBOb2RlKiBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CkBAIC0xMzY3
LDcgKzEzNjcsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IElucwogICAgIHJldHVybiBjaGlsZHJl
bi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9N
OjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExp
c3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUsIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXBJZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExp
c3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUsIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXBJZCkKIHsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRM
aXN0ZW5lciA9IHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmxpc3RlbmVyOwogCkBAIC0xMzk1LDcg
KzEzOTUsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRM
aXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkTwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gdmFs
dWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgp
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gdmFs
dWUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgpCiAg
ICAgICAgIC5zZXRUeXBlKGV2ZW50VHlwZSkKICAgICAgICAgLnNldFVzZUNhcHR1cmUocmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSkKICAgICAgICAgLnNldElzQXR0cmlidXRlKGV2
ZW50TGlzdGVuZXItPmlzQXR0cmlidXRlKCkpCkBAIC0xNDA3LDcgKzE0MDcsNyBAQCBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkTwogICAgICAgICAgICAgdmFsdWUtPnNldEhhbmRsZXIoaW5qZWN0ZWRT
Y3JpcHQud3JhcE9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS0+dm0oKSwgaGFu
ZGxlciksICpvYmplY3RHcm91cElkKSk7CiAgICAgfQogICAgIGlmICghc2NyaXB0SUQuaXNOdWxs
KCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpM
b2NhdGlvbj4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb246OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkxvY2F0aW9uOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFNjcmlwdElkKHNjcmlwdElEKQog
ICAgICAgICAgICAgLnNldExpbmVOdW1iZXIobGluZU51bWJlcik7CiAgICAgICAgIHZhbHVlLT5z
ZXRMb2NhdGlvbihsb2NhdGlvbi5yZWxlYXNlKCkpOwpAQCAtMTQxNywxNCArMTQxNywxNCBAQCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkTwogICAgIHJldHVybiB2YWx1ZS5yZWxlYXNlKCk7CiB9CiAg
ICAgCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVu
KFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gYXhPYmplY3QsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYgY2hpbGROb2RlSWRzKQordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IGF4T2JqZWN0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8aW50Pj4mIGNoaWxkTm9kZUlkcykKIHsKICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGF4
T2JqZWN0LT5jaGlsZHJlbigpOwogICAgIGlmICghY2hpbGRyZW4uc2l6ZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgaWYgKCFjaGlsZE5vZGVJZHMpCi0gICAgICAgIGNoaWxkTm9kZUlk
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAg
ICBjaGlsZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUo
KTsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkT2JqZWN0IDogY2hpbGRyZW4pIHsK
ICAgICAgICAgaWYgKE5vZGUqIGNoaWxkTm9kZSA9IGNoaWxkT2JqZWN0LT5ub2RlKCkpCkBAIC0x
NDM0LDcgKzE0MzQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpwcm9jZXNzQWNjZXNzaWJp
bGl0eUNoaWxkcmVuKFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU9iagogICAgIH0KIH0KICAgICAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5v
ZGUqIG5vZGUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIGlm
ICghbm9kZSkKQEAgLTE0NDUsMzEgKzE0NDUsMzEgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IK
IAogICAgIE5vZGUqIGFjdGl2ZURlc2NlbmRhbnROb2RlID0gbnVsbHB0cjsKICAgICBib29sIGJ1
c3kgPSBmYWxzZTsKLSAgICBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGll
czo6Q2hlY2tlZCBjaGVja2VkID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM6OkNoZWNrZWQ6OkZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+PiBjaGlsZE5vZGVJZHM7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PGludD4+IGNvbnRyb2xsZWROb2RlSWRzOworICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQgY2hlY2tlZCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6
OkZhbHNlOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjaGls
ZE5vZGVJZHM7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGNv
bnRyb2xsZWROb2RlSWRzOwogICAgIGJvb2wgZXhpc3RzID0gZmFsc2U7CiAgICAgYm9vbCBleHBh
bmRlZCA9IGZhbHNlOwogICAgIGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gZmxvd2VkTm9kZUlkczsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gZmxvd2VkTm9kZUlkczsKICAgICBi
b29sIGZvY3VzZWQgPSBmYWxzZTsKICAgICBib29sIGlnbm9yZWQgPSB0cnVlOwogICAgIGJvb2wg
aWdub3JlZEJ5RGVmYXVsdCA9IGZhbHNlOwotICAgIFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzOjpJbnZhbGlkIGludmFsaWQgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nl
c3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6RmFsc2U7CisgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZCBpbnZhbGlkID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6
RmFsc2U7CiAgICAgYm9vbCBoaWRkZW4gPSBmYWxzZTsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAg
Ym9vbCBsaXZlUmVnaW9uQXRvbWljID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGxpdmVSZWdpb25SZWxldmFudDsKLSAgICBUeXBlQnVp
bGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6TGl2ZVJlZ2lvblN0YXR1cyBsaXZl
UmVnaW9uU3RhdHVzID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6
OkxpdmVSZWdpb25TdGF0dXM6Ok9mZjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4gbGl2ZVJlZ2lvblJlbGV2YW50OworICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkxpdmVSZWdpb25TdGF0dXMgbGl2ZVJl
Z2lvblN0YXR1cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM6OkxpdmVSZWdpb25TdGF0dXM6Ok9mZjsKICAgICBOb2RlKiBtb3VzZUV2ZW50Tm9kZSA9
IG51bGxwdHI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+
IG93bmVkTm9kZUlkczsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50
Pj4gb3duZWROb2RlSWRzOwogICAgIE5vZGUqIHBhcmVudE5vZGUgPSBudWxscHRyOwogICAgIGJv
b2wgcHJlc3NlZCA9IGZhbHNlOwogICAgIGJvb2wgcmVhZG9ubHkgPSBmYWxzZTsKICAgICBib29s
IHJlcXVpcmVkID0gZmFsc2U7CiAgICAgU3RyaW5nIHJvbGU7CiAgICAgYm9vbCBzZWxlY3RlZCA9
IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBz
ZWxlY3RlZENoaWxkTm9kZUlkczsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8aW50Pj4gc2VsZWN0ZWRDaGlsZE5vZGVJZHM7CiAgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQg
PSBmYWxzZTsKICAgICBib29sIHN1cHBvcnRzRXhwYW5kZWQgPSBmYWxzZTsKICAgICBib29sIHN1
cHBvcnRzTGl2ZVJlZ2lvbiA9IGZhbHNlOwpAQCAtMTQ5NCwxMSArMTQ5NCwxMSBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYgogICAgICAgICAgICAgaWYgKHN1cHBvcnRzQ2hlY2tlZCkgewogICAg
ICAgICAgICAgICAgIGludCBjaGVja1ZhbHVlID0gYXhPYmplY3QtPmNoZWNrYm94T3JSYWRpb1Zh
bHVlKCk7IC8vIEVsZW1lbnQgdXNpbmcgYXJpYS1jaGVja2VkLgogICAgICAgICAgICAgICAgIGlm
IChjaGVja1ZhbHVlID09IDEpCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPSBUeXBlQnVp
bGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q2hlY2tlZDo6VHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hlY2tlZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6OlRydWU7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY2hlY2tWYWx1ZSA9PSAyKQotICAgICAgICAgICAgICAgICAgICBjaGVja2VkID0gVHlwZUJ1
aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6Ok1peGVkOworICAg
ICAgICAgICAgICAgICAgICBjaGVja2VkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nl
c3NpYmlsaXR5UHJvcGVydGllczo6Q2hlY2tlZDo6TWl4ZWQ7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoYXhPYmplY3QtPmlzQ2hlY2tlZCgpKSAvLyBOYXRpdmUgY2hlY2tib3guCi0gICAgICAg
ICAgICAgICAgICAgIGNoZWNrZWQgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllczo6Q2hlY2tlZDo6VHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6
OlRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHByb2Nlc3NB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW4oYXhPYmplY3QsIGNoaWxkTm9kZUlkcyk7CkBAIC0xNTA3LDcg
KzE1MDcsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYgogICAgICAgICAgICAgICAgIFZlY3Rv
cjxFbGVtZW50Kj4gY29udHJvbGxlZEVsZW1lbnRzOwogICAgICAgICAgICAgICAgIGF4T2JqZWN0
LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUoY29udHJvbGxlZEVsZW1lbnRzLCBhcmlhX2NvbnRyb2xz
QXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xsZWRFbGVtZW50cy5zaXplKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgY29udHJv
bGxlZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgZm9yIChFbGVtZW50KiBjb250cm9sbGVkRWxlbWVudCA6IGNv
bnRyb2xsZWRFbGVtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWROb2Rl
SWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoY29udHJvbGxlZEVsZW1lbnQpKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xNTI0LDcgKzE1MjQsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRPYgogICAgICAgICAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gZmxvd2VkRWxlbWVudHM7
CiAgICAgICAgICAgICAgICAgYXhPYmplY3QtPmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShmbG93ZWRF
bGVtZW50cywgYXJpYV9mbG93dG9BdHRyKTsKICAgICAgICAgICAgICAgICBpZiAoZmxvd2VkRWxl
bWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb3dlZE5vZGVJZHMgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmxvd2VkTm9kZUlkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIGZsb3dlZEVsZW1lbnQg
OiBmbG93ZWRFbGVtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3dlZE5vZGVJZHMt
PmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChmbG93ZWRFbGVtZW50KSk7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTU0MSwxMyArMTU0MSwxMyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YgogICAgICAgICAgICAgCiAgICAgICAgICAgICBTdHJpbmcgaW52YWxpZFZhbHVlID0gYXhPYmpl
Y3QtPmludmFsaWRTdGF0dXMoKTsKICAgICAgICAgICAgIGlmIChpbnZhbGlkVmFsdWUgPT0gImZh
bHNlIikKLSAgICAgICAgICAgICAgICBpbnZhbGlkID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQ6OkZhbHNlOworICAgICAgICAgICAgICAgIGludmFs
aWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpJ
bnZhbGlkOjpGYWxzZTsKICAgICAgICAgICAgIGVsc2UgaWYgKGludmFsaWRWYWx1ZSA9PSAiZ3Jh
bW1hciIpCi0gICAgICAgICAgICAgICAgaW52YWxpZCA9IFR5cGVCdWlsZGVyOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzOjpJbnZhbGlkOjpHcmFtbWFyOworICAgICAgICAgICAgICAgIGlu
dmFsaWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
OjpJbnZhbGlkOjpHcmFtbWFyOwogICAgICAgICAgICAgZWxzZSBpZiAoaW52YWxpZFZhbHVlID09
ICJzcGVsbGluZyIpCi0gICAgICAgICAgICAgICAgaW52YWxpZCA9IFR5cGVCdWlsZGVyOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpJbnZhbGlkOjpTcGVsbGluZzsKKyAgICAgICAgICAg
ICAgICBpbnZhbGlkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllczo6SW52YWxpZDo6U3BlbGxpbmc7CiAgICAgICAgICAgICBlbHNlIC8vIEZ1dHVyZSB2
ZXJzaW9ucyBvZiBBUklBIG1heSBhbGxvdyBhZGRpdGlvbmFsIHRydXRoeSB2YWx1ZXMuIEV4LiBm
b3JtYXQsIG9yZGVyLCBvciBzaXplLgotICAgICAgICAgICAgICAgIGludmFsaWQgPSBUeXBlQnVp
bGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6VHJ1ZTsKKyAgICAg
ICAgICAgICAgICBpbnZhbGlkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmls
aXR5UHJvcGVydGllczo6SW52YWxpZDo6VHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKGF4T2JqZWN0LT5pc0FSSUFIaWRkZW4oKSB8fCBheE9iamVjdC0+aXNET01IaWRkZW4oKSkK
ICAgICAgICAgICAgICAgICBoaWRkZW4gPSB0cnVlOwpAQCAtMTU2MSwxMCArMTU2MSwxMCBAQCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYgogICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZh
bnRBdHRyVmFsdWUgPSBheE9iamVjdC0+YXJpYUxpdmVSZWdpb25SZWxldmFudCgpOwogICAgICAg
ICAgICAgICAgIGlmICghYXJpYVJlbGV2YW50QXR0clZhbHVlLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBlbnVtIHZhbHVlcyByYXRoZXIgdGhhbiBzdHJp
bmdzIG9uY2UgdW5ibG9ja2VkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEzMzcxMQotICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50QWRkaXRpb25zID0gVHlwZUJ1aWxkZXI6Omdl
dFdlYkVudW1Db25zdGFudFZhbHVlKFR5cGVCdWlsZGVyOjpET006OkxpdmVSZWdpb25SZWxldmFu
dDo6QWRkaXRpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFJl
bW92YWxzID0gVHlwZUJ1aWxkZXI6OmdldFdlYkVudW1Db25zdGFudFZhbHVlKFR5cGVCdWlsZGVy
OjpET006OkxpdmVSZWdpb25SZWxldmFudDo6UmVtb3ZhbHMpOwotICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcgYXJpYVJlbGV2YW50VGV4dCA9IFR5cGVCdWlsZGVyOjpnZXRXZWJFbnVtQ29uc3Rh
bnRWYWx1ZShUeXBlQnVpbGRlcjo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OlRleHQpOwotICAg
ICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5n
IGFyaWFSZWxldmFudEFkZGl0aW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldFdlYkVudW1D
b25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6TGl2ZVJlZ2lvblJlbGV2YW50
OjpBZGRpdGlvbnMpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50UmVt
b3ZhbHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRXZWJFbnVtQ29uc3RhbnRWYWx1ZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6UmVtb3ZhbHMpOworICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50VGV4dCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OmdldFdlYkVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
TGl2ZVJlZ2lvblJlbGV2YW50OjpUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lv
blJlbGV2YW50ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIHZhbHVlcyA9IFNw
YWNlU3BsaXRTdHJpbmcoYXJpYVJlbGV2YW50QXR0clZhbHVlLCB0cnVlKTsKICAgICAgICAgICAg
ICAgICAgICAgLy8gQGFyaWEtcmVsZXZhbnQ9ImFsbCIgaXMgZXhwb3NlZCBhcyBbImFkZGl0aW9u
cyIsInJlbW92YWxzIiwidGV4dCJdLCBpbiBvcmRlci4KICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBvcmRlciBpcyBjb250cm9sbGVkIGluIFdlYkNvcmUgYW5kIGV4cGVjdGVkIGluIFdlYklu
c3BlY3RvclVJLgpAQCAtMTU4NCw5ICsxNTg0LDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IK
IAogICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhTGl2ZSA9IGF4T2JqZWN0LT5hcmlhTGl2ZVJl
Z2lvblN0YXR1cygpOwogICAgICAgICAgICAgICAgIGlmIChhcmlhTGl2ZSA9PSAiYXNzZXJ0aXZl
IikKLSAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblN0YXR1cyA9IFR5cGVCdWlsZGVyOjpE
T006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZlUmVnaW9uU3RhdHVzOjpBc3NlcnRpdmU7
CisgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0dXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZlUmVnaW9uU3RhdHVzOjpBc3Nl
cnRpdmU7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJpYUxpdmUgPT0gInBvbGl0ZSIpCi0g
ICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0dXMgPSBUeXBlQnVpbGRlcjo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllczo6TGl2ZVJlZ2lvblN0YXR1czo6UG9saXRlOworICAgICAg
ICAgICAgICAgICAgICBsaXZlUmVnaW9uU3RhdHVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6TGl2ZVJlZ2lvblN0YXR1czo6UG9saXRlOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXhPYmplY3QtPmlzQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QoKSkKQEAgLTE1OTYsNyArMTU5Niw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
CiAgICAgICAgICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBvd25lZEVsZW1lbnRzOwogICAgICAg
ICAgICAgICAgIGF4T2JqZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUob3duZWRFbGVtZW50cywg
YXJpYV9vd25zQXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKG93bmVkRWxlbWVudHMuc2l6ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG93bmVkTm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgICAgICBvd25lZE5v
ZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChFbGVtZW50KiBvd25lZEVsZW1lbnQgOiBvd25lZEVsZW1lbnRz
KQogICAgICAgICAgICAgICAgICAgICAgICAgb3duZWROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2Rl
UGF0aFRvRnJvbnRlbmQob3duZWRFbGVtZW50KSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTYy
Miw3ICsxNjIyLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5
UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxk
cmVuOwogICAgICAgICAgICAgYXhPYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGls
ZHJlbik7CiAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDaGlsZHJlbi5zaXplKCkpIHsKLSAgICAg
ICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hpbGROb2Rl
SWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RlZENoaWxkT2JqZWN0IDogc2VsZWN0ZWRDaGlsZHJl
bikgewogICAgICAgICAgICAgICAgICAgICBpZiAoTm9kZSogc2VsZWN0ZWRDaGlsZE5vZGUgPSBz
ZWxlY3RlZENoaWxkT2JqZWN0LT5ub2RlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxl
Y3RlZENoaWxkTm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHNlbGVjdGVk
Q2hpbGROb2RlKSk7CkBAIC0xNjMxLDcgKzE2MzEsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gdmFsdWUgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllczo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gdmFsdWUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpjcmVhdGUoKQogICAgICAgICAuc2V0
RXhpc3RzKGV4aXN0cykKICAgICAgICAgLnNldExhYmVsKGxhYmVsKQogICAgICAgICAuc2V0Um9s
ZShyb2xlKQpAQCAtMTY2MCw3ICsxNjYwLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAg
ICAgICAgICAgIHZhbHVlLT5zZXRJZ25vcmVkKGlnbm9yZWQpOwogICAgICAgICBpZiAoaWdub3Jl
ZEJ5RGVmYXVsdCkKICAgICAgICAgICAgIHZhbHVlLT5zZXRJZ25vcmVkQnlEZWZhdWx0KGlnbm9y
ZWRCeURlZmF1bHQpOwotICAgICAgICBpZiAoaW52YWxpZCAhPSBUeXBlQnVpbGRlcjo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6RmFsc2UpCisgICAgICAgIGlmIChpbnZh
bGlkICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6
OkludmFsaWQ6OkZhbHNlKQogICAgICAgICAgICAgdmFsdWUtPnNldEludmFsaWQoaW52YWxpZCk7
CiAgICAgICAgIGlmIChoaWRkZW4pCiAgICAgICAgICAgICB2YWx1ZS0+c2V0SGlkZGVuKGhpZGRl
bik7CkBAIC0xNzY0LDcgKzE3NjQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDb21t
aXRMb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hp
bGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgZnJhbWVPd25lcklkKTsKICAgICB1bmJpbmQoZnJhbWVP
d25lciwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShmcmFtZU93
bmVyLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShmcmFtZU93bmVy
LCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcg
PSBpbm5lclByZXZpb3VzU2libGluZyhmcmFtZU93bmVyKTsKICAgICBpbnQgcHJldklkID0gcHJl
dmlvdXNTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2aW91c1NpYmxpbmcp
IDogMDsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50
SWQsIHByZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAg
Ly8gQ2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZCAtPiByZXR1cm4gdmFsdWUgb2YgYSBuZXcg
Y2hpbGQuCiAgICAgICAgIE5vZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxpbmco
bm9kZSk7CiAgICAgICAgIGludCBwcmV2SWQgPSBwcmV2U2libGluZyA/IG1fZG9jdW1lbnROb2Rl
VG9JZE1hcC5nZXQocHJldlNpYmxpbmcpIDogMDsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUobm9kZSwg
MCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZt
X2RvY3VtZW50Tm9kZVRvSWRNYXApOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hp
bGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgdmFsdWUucmVsZWFzZSgpKTsKICAgICB9
CiB9CkBAIC0xODU5LDcgKzE4NTksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1v
dmVET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbgogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGVsZW1lbnRzKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxpbnQ+PiBub2RlSWRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
aW50Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGlu
dD4+IG5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy5hdChpKTsKICAg
ICAgICAgaW50IGlkID0gYm91bmROb2RlSWQoZWxlbWVudCk7CkBAIC0xOTkxLDcgKzE5OTEsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6
OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCitQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVj
dG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXApCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwog
ICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCmluZGV4IDI4ZDdiMjM2YjI1Mjc5NmM3MTFlMDMwMTZjOWJkNDI4MjA0OTkzYmYuLmQ5
N2VkYjcwYTk5YWM2ZmJiNDExMDdmMjFiMGExMDAyYWI3NjRmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMTksOCArMTE5LDggQEAgcHVi
bGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIERPTSBu
b2RlcyBpbnNwZWN0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCogZWxlbWVudElk
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBxdWVy
eVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RvcnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgcmVzdWx0KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiYgcm9vdCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgaW50KiBkZXB0aCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0
ZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmli
dXRlc0FzVGV4dChFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgU3RyaW5nKiBuYW1lKSBvdmVycmlkZTsKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRNTCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldE91dGVySFRNTChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0
ZXJIVE1MKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVlKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5l
cj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYg
YXhQcm9wZXJ0aWVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5l
cnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9i
amVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNj
ZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNw
YWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4q
IG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwg
aW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxpbnQ+PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkU2VhcmNoUmVz
dWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1
dGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZykgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwdXNo
Tm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGlu
dCogbm9kZUlkKSBvdmVycmlkZTsKQEAgLTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgU3RyaW5nIGRvY3VtZW50VVJMU3RyaW5nKERvY3VtZW50Kik7CiAKLSAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzb2x2
ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiByZXNvbHZlTm9kZShO
b2RlKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVBy
ZXNzKCk7CiAgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KE5vZGUqKTsKICAgICB2b2lkIG1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmll
ckZsYWdzKTsKQEAgLTIzMCwxMiArMjMwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVT
dWJ0cmVlQnJlYWtwb2ludHMoTm9kZSogcm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFs
dWUpOwogICAgIHZvaWQgZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBi
cmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGRlc2NyaXB0aW9uKTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0
aCwgTm9kZVRvSWRNYXAqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50Kik7
Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4o
Tm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1
aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cElkKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXMoTm9kZSopOwotICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8aW50Pj4mKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFw
Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBi
dWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
Pj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRl
cHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIo
Y29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCk7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWls
ZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5vZGUqKTsKKyAgICB2b2lkIHByb2Nl
c3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Piwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+Jik7CiAgICAgCiAgICAgTm9k
ZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICBOb2RlKiBub2RlRm9yT2Jq
ZWN0SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNGE0YjM4ZjJi
NWM1YjhiMDYyMDY4ZTg1Zjk5M2Q1ZTllMDA4OWQ0Yi4uYzU1OTcxMWQwMjUzMzJjMzI3MDFmZWY1
OTMwNGQyM2E4MjZhOTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0
YXJnZXQsIGludCBicmVha3BvCiAgICAgaWYgKCgxIDw8IGJyZWFrcG9pbnRUeXBlKSAmIGluaGVy
aXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgewogICAgICAgICAvLyBGb3IgaW5oZXJpdGFi
bGUgYnJlYWtwb2ludCB0eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRoZSBzYW1lIGFz
IHRoZSBub2RlIHRoYXQgb3ducyBhIGJyZWFrcG9pbnQuCiAgICAgICAgIC8vIFRhcmdldCBub2Rl
IG1heSBiZSB1bmtub3duIHRvIGZyb250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2ggaXQgZmlyc3Qu
Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+IHRhcmdldE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNvbHZlTm9kZSh0YXJnZXQs
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0
Tm9kZU9iamVjdCA9IG1fZG9tQWdlbnQtPnJlc29sdmVOb2RlKHRhcmdldCwgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOwogICAgICAgICBkZXNjcmlwdGlvbi0+
c2V0VmFsdWUoInRhcmdldE5vZGUiLCB0YXJnZXROb2RlT2JqZWN0KTsKIAogICAgICAgICAvLyBG
aW5kIGJyZWFrcG9pbnQgb3duZXIgbm9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggMDM5Yjc0NThiMDhkZjUz
NzMzNWE5MTYyNjkwYzcyZDM2ZTMxOWRiZC4uMDRjNDk5NGM2NzI5Y2M0ZGVmNzRkZTNhMDUzN2Iz
ZDE5NTZmMmNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fZW5hYmxlZCA9IGZh
bHNlOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0
ZW1zKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpCit2b2lkIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+PiYgaXRlbXMpCiB7CiAgICAgRnJhbWUqIGZyYW1lOwogICAgIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJpbmcsIHN0b3JhZ2VJZCwg
ZnJhbWUpOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4gc3RvcmFnZUl0
ZW1zID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4gc3RvcmFnZUl0
ZW1zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0
b3JhZ2VBcmVhLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBrZXkgPSBzdG9yYWdl
QXJlYS0+a2V5KGkpOwogICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdG9yYWdlQXJlYS0+aXRlbShr
ZXkpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiBlbnRyeSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0
ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4g
ZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAg
ICAgICAgZW50cnktPmFkZEl0ZW0oa2V5KTsKICAgICAgICAgZW50cnktPmFkZEl0ZW0odmFsdWUp
OwogICAgICAgICBzdG9yYWdlSXRlbXMtPmFkZEl0ZW0oZW50cnkucmVsZWFzZSgpKTsKQEAgLTE1
OCw5ICsxNTgsOSBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQo
U3RvcmFnZSogc3RvcmFnZSkKICAgICByZXR1cm4gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLmdl
dCgpLCBpc0xvY2FsU3RvcmFnZSktPnRvSlNPTlN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50OjpzdG9yYWdlSWQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBi
b29sIGlzTG9jYWxTdG9yYWdlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET01T
dG9yYWdlOjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkKIHsKLSAg
ICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpj
cmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpET01TdG9yYWdlOjpTdG9y
YWdlSWQ6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdp
bi0+dG9SYXdTdHJpbmcoKSkKICAgICAgICAgLnNldElzTG9jYWxTdG9yYWdlKGlzTG9jYWxTdG9y
YWdlKS5yZWxlYXNlKCk7CiB9CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5
LCBjb24KICAgICBpZiAoIW1fZnJvbnRlbmREaXNwYXRjaGVyIHx8ICFtX2VuYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET01TdG9y
YWdlOjpTdG9yYWdlSWQ+IGlkID0gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9yYWdlVHlw
ZSA9PSBMb2NhbFN0b3JhZ2UpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET01T
dG9yYWdlOjpTdG9yYWdlSWQ+IGlkID0gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLCBzdG9yYWdl
VHlwZSA9PSBMb2NhbFN0b3JhZ2UpOwogCiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQoaWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmlu
ZGV4IDA1NzI4ZjFmY2UzNjM5ZDJmNmEyMGVhMTVkY2Q5OTQ2NWM5MjNhMWIuLjI4MjBmMTE3NTFm
MjFhYmY5OGUwNmUyOTBiMzMyY2I5OWJhYzgyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTYzLDEzICs2MywxMyBA
QCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3Rv
cmFnZUl0ZW1zKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+PiYgaXRlbXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRl
bShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
IHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29u
c3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVj
dGVkIHNjcmlwdC4KICAgICBTdHJpbmcgc3RvcmFnZUlkKFN0b3JhZ2UqKTsKLSAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3RvcmFn
ZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSk7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChT
ZWN1cml0eU9yaWdpbiosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOwogCiAgICAgLy8gQ2FsbGVkIGZy
b20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3Jh
Z2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFnZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwCmluZGV4IGQ5MzhhYjUzOWUzZWJjNmMyODU4YjRjNDY5Y2U3MjhiODFmN2ViNTEuLjMwOTlk
NjU2ZWQwYjkyMGZjMzk2MmI4ZGUyOGE3Y2I3YWM1M2I1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgbmFtZXNwYWNlIHsKIAogdm9pZCByZXBvcnRUcmFuc2FjdGlvbkZhaWxlZChFeGVjdXRl
U1FMQ2FsbGJhY2sqIHJlcXVlc3RDYWxsYmFjaywgU1FMRXJyb3IqIGVycm9yKQogewotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IGVycm9yT2JqZWN0
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yOjpjcmVhdGUoKQorICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IGVycm9yT2JqZWN0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yOjpjcmVhdGUoKQogICAgICAg
ICAuc2V0TWVzc2FnZShlcnJvci0+bWVzc2FnZSgpKQogICAgICAgICAuc2V0Q29kZShlcnJvci0+
Y29kZSgpKTsKICAgICByZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKG51bGxwdHIsIG51bGxw
dHIsIGVycm9yT2JqZWN0LnJlbGVhc2UoKSk7CkBAIC04MCwxMiArODAsMTIgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCogcm93TGlzdCA9IHJlc3VsdFNldC0+
cm93cygpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBjb2x1bW5OYW1lcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4gY29sdW1uTmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvbHVtbnMgPSByb3dM
aXN0LT5jb2x1bW5OYW1lcygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbHVt
bnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBjb2x1bW5OYW1lcy0+YWRkSXRlbShjb2x1bW5z
W2ldKTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yVmFsdWU+PiB2YWx1ZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+PiB2YWx1ZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8U1FM
VmFsdWU+JiBkYXRhID0gcm93TGlzdC0+dmFsdWVzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgU1FMVmFsdWUm
IHZhbHVlID0gcm93TGlzdC0+dmFsdWVzKClbaV07CkBAIC0yNTQsMTQgKzI1NCwxNCBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fZW5h
YmxlZCA9IGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFi
YXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBuYW1lcykK
K3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKQogewogICAgIGlmICghbV9lbmFibGVk
KSB7CiAgICAgICAgICplcnJvciA9ICJEYXRhYmFzZSBhZ2VudCBpcyBub3QgZW5hYmxlZCI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBuYW1lcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIG5hbWVzID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAKICAgICBEYXRhYmFzZSogZGF0YWJhc2Ug
PSBkYXRhYmFzZUZvcklkKGRhdGFiYXNlSWQpOwogICAgIGlmIChkYXRhYmFzZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXgg
YzU2MTU1NjNhM2U4Yjc1OTU1ZDBkYTBkNWU5NmU4NmIwN2ZhMGEzNy4uYTM1NWFmYzBhNmVkZjFi
MjczNWMyMjQ5YmVkZGY5NDEyNjIyYzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFi
bGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFt
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiYgbmFtZXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBQYXNz
UmVmUHRyPEV4ZWN1dGVTUUxDYWxsYmFjaz4pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZy
b20gdGhlIGluamVjdGVkIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRleCBmODQ5OThlYTZlOTI0ZDBl
M2YyZmY5Y2FmYWM4NGQ3NTM4Y2I3ZWYwLi5hYTQ5NmZjZTdiNWMyNmM3ZmU5NDg0NjMwNDgwYzE0
YjFiNzlkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCkBAIC02MCw3ICs2MCw3IEBAIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UoUGFzc1JlZlB0cjxEYXRhYmFz
ZT4gZGF0YWJhCiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0
b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIp
CiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFz
ZT4ganNvbk9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFz
ZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkRh
dGFiYXNlPiBqc29uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkRhdGFi
YXNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQobV9pZCkKICAgICAgICAgLnNldERvbWFpbiht
X2RvbWFpbikKICAgICAgICAgLnNldE5hbWUobV9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggN2ZkNjI5MWM5
MTA3ZjM4ZWI0MTNhNjE5MWE3Njc3MGI1NzNjZTIzNy4uZjc0YTU4NGU1NzMxN2Y0MGQ1NWQ2ZWE4
NzVhNWNjNGM0MTQ3NmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC02NywxNCArNjcsMTQgQEAKICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsKLXVzaW5nIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwotdXNpbmcg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpEYXRhRW50cnk7Ci11c2luZyBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleTsKLXVzaW5nIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5UGF0aDsKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkluZGV4ZWREQjo6S2V5UmFuZ2U7Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJ
bmRleGVkREI6Ok9iamVjdFN0b3JlOwotdXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5k
ZXhlZERCOjpPYmplY3RTdG9yZUluZGV4OwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk7Cit1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9i
amVjdFN0b3JlczsKK3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6RGF0YUVu
dHJ5OwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk7Cit1c2luZyBJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6OktleVBhdGg7Cit1c2luZyBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKK3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6Oklu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAogdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwogdHlwZWRl
ZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNr
OwpAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBkYXRhYmFzZU5hbWVzTGlzdCA9IHJlcXVlc3RSZXN1bHQtPmRvbVN0
cmluZ0xpc3QoKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz4+IGRhdGFiYXNlTmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhYmFz
ZU5hbWVzTGlzdC0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIGRhdGFiYXNlTmFtZXMtPmFk
ZEl0ZW0oZGF0YWJhc2VOYW1lc0xpc3QtPml0ZW0oaSkpOwogICAgICAgICBtX3JlcXVlc3RDYWxs
YmFjay0+c2VuZFN1Y2Nlc3MoZGF0YWJhc2VOYW1lcy5yZWxlYXNlKCkpOwpAQCAtMjUxLDcgKzI1
MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChj
b25zdCBJREJLZXlQYXRoJiBpZGJLZXlQYXRoKQogICAgICAgICBicmVhazsKICAgICBjYXNlIElE
QktleVBhdGg6OkFycmF5VHlwZTogewogICAgICAgICBrZXlQYXRoID0gS2V5UGF0aDo6Y3JlYXRl
KCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpBcnJheSk7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBhcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0
cmluZ0FycmF5ID0gaWRiS2V5UGF0aC5hcnJheSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmluZ0FycmF5LnNpemUoKTsgKytpKQogICAgICAgICAgICAgYXJyYXktPmFkZEl0
ZW0oc3RyaW5nQXJyYXlbaV0pOwpAQCAtMjgyLDEwICsyODIsMTAgQEAgcHVibGljOgogCiAgICAg
ICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgZGF0YWJhc2VNZXRhZGF0YSA9IGlkYkRhdGFi
YXNlLT5tZXRhZGF0YSgpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPj4g
b2JqZWN0U3RvcmVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgpOworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5k
ZXhlZERCOjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+OjpjcmVh
dGUoKTsKIAogICAgICAgICBmb3IgKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVj
dFN0b3JlTWV0YWRhdGEgOiBkYXRhYmFzZU1ldGFkYXRhLm9iamVjdFN0b3Jlcy52YWx1ZXMoKSkg
ewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleD4+IGluZGV4ZXMg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJ
bmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6Y3Jl
YXRlKCk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhN
ZXRhZGF0YSA6IG9iamVjdFN0b3JlTWV0YWRhdGEuaW5kZXhlcy52YWx1ZXMoKSkgewogICAgICAg
ICAgICAgICAgIFJlZlB0cjxPYmplY3RTdG9yZUluZGV4PiBvYmplY3RTdG9yZUluZGV4ID0gT2Jq
ZWN0U3RvcmVJbmRleDo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGEwMzdmYThjYzk3MGNjZGZjNjFm
OGE4ODY0YTk4OTZhY2YzN2Q5ZDAuLmE2OWRmMWFkNTgyODI2YTI2MzM3NmQ3ODZhMzEyYTFmZmQ2
NjUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoUHNldWRvRWxlbWVudCogcHNldWRvRWxl
bWVuCiAgICAgdW5iaW5kUHNldWRvRWxlbWVudChwc2V1ZG9FbGVtZW50KTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7Ci0gICAgbGF5
ZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOworICAgIGxheWVycyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+Ojpj
cmVhdGUoKTsKIAogICAgIE5vZGUqIG5vZGUgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRPTUFnZW50KCktPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewpAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkCiAgICAgZ2F0aGVyTGF5ZXJz
VXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRlcmVyLCBsYXllcnMp
OwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1Jl
bmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJl
ZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJlci0+aGFzTGF5ZXIoKSkgewog
ICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KGVycm9yU3RyaW5n
LCB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpLCBsYXllcnMpOwpA
QCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxh
eWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nCiAgICAgICAgIGdhdGhl
ckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJlciwg
bGF5ZXJzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJz
VXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRl
ckxheWVyKiByZW5kZXJMYXllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQordm9p
ZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhp
ZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXll
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewogICAgIGlmIChyZW5kZXJMYXllci0+aXND
b21wb3NpdGVkKCkpCiAgICAgICAgIGxheWVycy0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVy
KGVycm9yU3RyaW5nLCByZW5kZXJMYXllcikpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJj
aHkoRXJyb3JTdHJpbmcqCiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVy
YXJjaHkoZXJyb3JTdHJpbmcsIHJlbmRlckxheWVyLCBsYXllcnMpOwogfQogCi1QYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
UmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RG
b3JMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXll
cikKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJnJlbmRlckxheWVyLT5yZW5kZXJl
cigpOwogICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHJlbmRlckxheWVyLT5iYWNr
aW5nKCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnUKICAgICAg
ICAgbm9kZSA9IHJlbmRlcmVyLT5wYXJlbnQoKS0+ZWxlbWVudCgpOwogCiAgICAgLy8gQmFzaWMg
c2V0IG9mIHByb3BlcnRpZXMuCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6TGF5ZXI+IGxheWVyT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5
ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpMYXll
clRyZWU6OkxheWVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0TGF5ZXJJZChiaW5kKHJlbmRlckxh
eWVyKSkKICAgICAgICAgLnNldE5vZGVJZChpZEZvck5vZGUoZXJyb3JTdHJpbmcsIG5vZGUpKQog
ICAgICAgICAuc2V0Qm91bmRzKGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChyZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKSkpCkBAIC0yMTcsMTYgKzIxNywxNiBAQCBpbnQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmlkRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIE5vZGUq
IG5vZGUpCiAgICAgcmV0dXJuIG5vZGVJZDsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpi
dWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRl
KCkKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpJbnRSZWN0Ojpj
cmVhdGUoKQogICAgICAgICAuc2V0WChyZWN0LngoKSkKICAgICAgICAgLnNldFkocmVjdC55KCkp
CiAgICAgICAgIC5zZXRXaWR0aChyZWN0LndpZHRoKCkpCiAgICAgICAgIC5zZXRIZWlnaHQocmVj
dC5oZWlnaHQoKSkucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVy
VHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYgY29tcG9zaXRpbmdSZWFzb25zKQordm9pZCBJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNvbXBvc2l0aW5nUmVh
c29ucykKIHsKICAgICBjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBtX2lkVG9MYXll
ci5nZXQobGF5ZXJJZCk7CiAKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyogZXJyb3JT
dHJpbgogICAgIH0KIAogICAgIENvbXBvc2l0aW5nUmVhc29ucyByZWFzb25zQml0bWFzayA9IHJl
bmRlckxheWVyLT5jb21wb3NpdG9yKCkucmVhc29uc0ZvckNvbXBvc2l0aW5nKCpyZW5kZXJMYXll
cik7Ci0gICAgY29tcG9zaXRpbmdSZWFzb25zID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5
ZXJUcmVlOjpDb21wb3NpdGluZ1JlYXNvbnM6OmNyZWF0ZSgpOworICAgIGNvbXBvc2l0aW5nUmVh
c29ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25z
OjpjcmVhdGUoKTsKIAogICAgIGlmIChyZWFzb25zQml0bWFzayAmIENvbXBvc2l0aW5nUmVhc29u
M0RUcmFuc2Zvcm0pCiAgICAgICAgIGNvbXBvc2l0aW5nUmVhc29ucy0+c2V0VHJhbnNmb3JtM0Qo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5oCmluZGV4IGRjNGNhZDMxZmVkMDkxYzc5M2RlMmYyODc5Y2FjMGViOWE2NzFmNDAu
LjZkODRjOWJjMGExN2VhZTU3NjM1MTFkNTljNTVmZTE0YzVhZWE0MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC0zNCw3
ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
RnJvbnRlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVy
cy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNjMsMTkgKzYzLDE5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJv
bSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5
ZXJJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRp
bmdSZWFzb25zPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsYXllcnNGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCByZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgbGF5ZXJJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJl
ZTo6Q29tcG9zaXRpbmdSZWFzb25zPiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIC8vIFJl
bmRlckxheWVyLXJlbGF0ZWQgbWV0aG9kcy4KICAgICBTdHJpbmcgYmluZChjb25zdCBSZW5kZXJM
YXllciopOwogICAgIHZvaWQgdW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAKLSAgICB2b2lk
IGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVu
ZGVyT2JqZWN0KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwotICAgIHZvaWQgZ2F0aGVyTGF5
ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRlckxheWVyKiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5k
ZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqLCBSZW5kZXJPYmplY3QqLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpM
YXllcj4+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5
KEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CiAKLSAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxk
T2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqLCBSZW5kZXJMYXllciopOwotICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVj
dEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmlu
ZyosIFJlbmRlckxheWVyKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpM
YXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7
CiAKICAgICBpbnQgaWRGb3JOb2RlKEVycm9yU3RyaW5nKiwgTm9kZSopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDI4YmI5MTk3
ZjdjMGYwMTFjMDhjOWUxNGY5ZmNhMDY4NjJhODRiMTcuLmRkZjFmMGJkY2U3YTY0YzM4NDY0NGMy
MTg4Yzc0ZDBhZmZhOTk4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0yODcsMjcgKzI4NywyNyBAQCBDYWNoZWRSZXNvdXJjZSog
SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgdXJsKQogICAgIHJldHVybiBjYWNoZWRSZXNvdXJjZTsKIH0KIAotSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VU
eXBlSnNvbihJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUpCitJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50
OjpyZXNvdXJjZVR5cGVKc29uKEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHJlc291
cmNlVHlwZSkKIHsKICAgICBzd2l0Y2ggKHJlc291cmNlVHlwZSkgewogICAgIGNhc2UgRG9jdW1l
bnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RG9jdW1lbnQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkRvY3VtZW50OwogICAgIGNhc2UgSW1hZ2VSZXNvdXJj
ZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNl
VHlwZTo6SW1hZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpS
ZXNvdXJjZVR5cGU6OkltYWdlOwogICAgIGNhc2UgRm9udFJlc291cmNlOgotICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpGb250OworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpGb250
OwogICAgIGNhc2UgU3R5bGVzaGVldFJlc291cmNlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTdHlsZXNoZWV0OworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpTdHlsZXNoZWV0
OwogICAgIGNhc2UgU2NyaXB0UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlNjcmlwdDsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZTo6U2NyaXB0OwogICAgIGNhc2Ug
WEhSUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpSZXNvdXJjZVR5cGU6OlhIUjsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlJlc291cmNlVHlwZTo6WEhSOwogICAgIGNhc2UgV2ViU29ja2V0UmVzb3VyY2U6Ci0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6
OldlYlNvY2tldDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJl
c291cmNlVHlwZTo6V2ViU29ja2V0OwogICAgIGNhc2UgT3RoZXJSZXNvdXJjZToKLSAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6
Ok90aGVyOwogICAgIH0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
UmVzb3VyY2VUeXBlOjpPdGhlcjsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKIH0KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQpAQCAtMzM1LDcgKzMzNSw3IEBAIEluc3BlY3RvclBh
Z2VBZ2VudDo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VU
eXBlKGNvbnN0IENhCiAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJj
ZTsKIH0KIAotSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJj
ZSYgY2FjaGVkUmVzb3VyY2UpCitJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5
cGUgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IENhY2hl
ZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICByZXR1cm4gcmVzb3VyY2VUeXBlSnNv
bihjYWNoZWRSZXNvdXJjZVR5cGUoY2FjaGVkUmVzb3VyY2UpKTsKIH0KQEAgLTQzMiw5ICs0MzIs
OSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHVybCkKICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihmcmFtZS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVS
TCh1cmwpLCAiIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObyk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tp
ZT4gYnVpbGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCitzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9y
Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpDb29raWU6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldE5hbWUoY29va2ll
Lm5hbWUpCiAgICAgICAgIC5zZXRWYWx1ZShjb29raWUudmFsdWUpCiAgICAgICAgIC5zZXREb21h
aW4oY29va2llLmRvbWFpbikKQEAgLTQ0Nyw5ICs0NDcsOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2ll
KGNvbgogICAgICAgICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29r
aWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlz
dCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNo
U2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiBjb29r
aWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4+IGNvb2tpZXMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29r
aWU+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llc0xpc3QpCiAg
ICAgICAgIGNvb2tpZXMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JDb29raWUoY29va2llKSk7CkBA
IC00OTcsNyArNDk3LDcgQEAgc3RhdGljIFZlY3RvcjxVUkw+IGFsbFJlc291cmNlc1VSTHNGb3JG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4m
IGNvb2tpZXMpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpDb29raWU+PiYgY29va2llcykKIHsKICAgICAvLyBJZiB3ZSBjYW4gZ2V0IHJhdyBj
b29raWVzLgogICAgIExpc3RIYXNoU2V0PENvb2tpZT4gcmF3Q29va2llc0xpc3Q7CkBAIC01MzYs
NyArNTM2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJp
bmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjoKICAgICBpZiAocmF3Q29va2llc0lt
cGxlbWVudGVkKQogICAgICAgICBjb29raWVzID0gYnVpbGRBcnJheUZvckNvb2tpZXMocmF3Q29v
a2llc0xpc3QpOwogICAgIGVsc2UKLSAgICAgICAgY29va2llcyA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsKKyAgICAg
ICAgY29va2llcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBj
b25zdCBTdHJpbmcmIHVybCkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
LCBjbwogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUtPmRvY3VtZW50KCksIHBh
cnNlZFVSTCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRS
ZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+JiBvYmplY3QpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6Z2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYgb2JqZWN0KQogewogICAgIG9iamVjdCA9IGJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsKIH0KQEAgLTU3Myw5
ICs1NzMsOSBAQCBzdGF0aWMgYm9vbCB0ZXh0Q29udGVudEZvckNhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgU3RyaW5nKgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
PiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1h
dGNoPj4mIHJlc3VsdHMpCiB7Ci0gICAgcmVzdWx0cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
OjpjcmVhdGUoKTsKKyAgICByZXN1bHRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwog
CiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6
IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/
ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTYwNywxOCArNjA3LDE4IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjCiAgICAgcmVzdWx0cyA9IENvbnRlbnRTZWFyY2hVdGlsaXRp
ZXM6OnNlYXJjaEluVGV4dEJ5TGluZXMoY29udGVudCwgcXVlcnksIGNhc2VTZW5zaXRpdmUsIGlz
UmVnZXgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
YWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBtYXRjaGVzQ291bnQpCitzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxk
T2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5n
JiB1cmwsIGludCBtYXRjaGVzQ291bnQpCiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdDo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0OjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJs
KHVybCkKICAgICAgICAgLnNldEZyYW1lSWQoZnJhbWVJZCkKICAgICAgICAgLnNldE1hdGNoZXND
b3VudChtYXRjaGVzQ291bnQpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYgcmVz
dWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+PiYgcmVzdWx0cykKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4gc2VhcmNo
UmVzdWx0cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiBzZWFyY2hSZXN1bHRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pjo6Y3JlYXRlKCk7CiAKICAgICBib29sIGlz
UmVnZXggPSBvcHRpb25hbElzUmVnZXggPyAqb3B0aW9uYWxJc1JlZ2V4IDogZmFsc2U7CiAgICAg
Ym9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZSA6IGZhbHNlOwpAQCAtOTQwLDkgKzk0MCw5IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzY3JpcHRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+c2NyaXB0c0VuYWJsZWQoaXNFbmFibGVkKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWls
ZE9iamVjdEZvckZyYW1lKEZyYW1lKiBmcmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFt
ZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBh
Z2U6OkZyYW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZy
YW1lOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFt
ZT4gZnJhbWVPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZTo6Y3JlYXRl
KCkKICAgICAgICAgLnNldElkKGZyYW1lSWQoZnJhbWUpKQogICAgICAgICAuc2V0TG9hZGVySWQo
bG9hZGVySWQoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKQogICAgICAgICAuc2V0
VXJsKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSkKQEAgLTk2MCwxNiArOTYwLDE2
IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGCiAgICAgcmV0dXJuIGZyYW1lT2JqZWN0OwogfQog
Ci1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBm
cmFtZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJj
ZVRyZWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUq
IGZyYW1lKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZT4gZnJhbWVPYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lKGZyYW1lKTsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFn
ZTo6RnJhbWVSZXNvdXJjZT4+IHN1YnJlc291cmNlcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+OjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpGcmFtZT4gZnJhbWVPYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lKGZyYW1lKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZT4+IHN1YnJlc291cmNlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+
IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpj
cmVhdGUoKQogICAgICAgICAgLnNldEZyYW1lKGZyYW1lT2JqZWN0KQogICAgICAgICAgLnNldFJl
c291cmNlcyhzdWJyZXNvdXJjZXMpOwogCiAgICAgZm9yIChhdXRvKiBjYWNoZWRSZXNvdXJjZSA6
IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKGZyYW1lKSkgewotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZT4gcmVzb3VyY2VPYmplY3QgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlOjpjcmVhdGUoKQorICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZT4gcmVz
b3VyY2VPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlOjpj
cmVhdGUoKQogICAgICAgICAgICAgLnNldFVybChjYWNoZWRSZXNvdXJjZS0+dXJsKCkpCiAgICAg
ICAgICAgICAuc2V0VHlwZShjYWNoZWRSZXNvdXJjZVR5cGVKc29uKCpjYWNoZWRSZXNvdXJjZSkp
CiAgICAgICAgICAgICAuc2V0TWltZVR5cGUoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWlt
ZVR5cGUoKSk7CkBAIC05ODMsMTAgKzk4MywxMCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6Ogog
ICAgICAgICBzdWJyZXNvdXJjZXMtPmFkZEl0ZW0ocmVzb3VyY2VPYmplY3QpOwogICAgIH0KIAot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4+IGNoaWxkcmVuQXJyYXk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPj4gY2hpbGRyZW5BcnJheTsKICAgICBmb3IgKEZyYW1lKiBjaGls
ZCA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJl
ZSgpLm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZHJlbkFycmF5KSB7Ci0gICAg
ICAgICAgICBjaGlsZHJlbkFycmF5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIGNoaWxkcmVuQXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT46OmNyZWF0ZSgpOwog
ICAgICAgICAgICAgcmVzdWx0LT5zZXRDaGlsZEZyYW1lcyhjaGlsZHJlbkFycmF5KTsKICAgICAg
ICAgfQogICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRnJhbWVU
cmVlKGNoaWxkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKaW5kZXggOWY4N2QyMjlkNDM2NzA5NmYyODYwMzgxZWYyM2QzYjIyNTMxOTRiNC4uYjM0
ZDFhYTRmYWMyMjNmNmExYTk3NWJhOGFjMTRkYWUwZGFiYzRiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtOTAsOSArOTAsOSBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShG
cmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgc3RhdGlj
IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZShGcmFtZSosIGNvbnN0IFVSTCYpOwotICAg
IHN0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlSnNvbihSZXNvdXJjZVR5cGUpOworICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlSnNvbihSZXNvdXJjZVR5cGUpOwogICAg
IHN0YXRpYyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291
cmNlJik7Ci0gICAgc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNl
VHlwZSBjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CisgICAg
c3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZSBjYWNoZWRSZXNv
dXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAKICAgICAvLyBQYWdlIEFQSSBm
b3IgSW5zcGVjdG9yRnJvbnRlbmQKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
Kikgb3ZlcnJpZGU7CkBAIC0xMDEsMTIgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWxvYWQoRXJyb3JT
dHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IG5hdmlnYXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+
JiBjb29raWVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0
cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29u
c3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRy
ZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJh
bWVSZXNvdXJjZVRyZWU+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNl
VHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VD
b250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0
IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNl
YXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3Vy
Y2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IGNvbnN0IFN0cmluZyYgaHRtbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQ
YWludFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgY2FuU2hvd0RlYnVnQm9yZGVycyhFcnJvclN0cmluZyosIGJvb2wqKSBvdmVycmlkZTsK
QEAgLTE3MCw4ICsxNzAsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIG1haW5SZXNvdXJj
ZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsK
ICAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBz
aXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpQYWdlOjpGcmFtZT4gYnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSopOwotICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpQYWdlOjpGcmFtZT4gYnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSopOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+
IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CiAgICAgUGFnZSogbV9wYWdlOwogICAg
IEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNw
cAppbmRleCBmNDgwYzU0MDczYzAwMjc1NDRlZmE0OGM5ZmFiNWUxYzE0ZGEyZjRiLi5jMTQ4N2Ew
OTcxMzI2NzYxMDJjMjY0YmRkMzFhNzcwY2RiZjY3MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAK
ICNpbmNsdWRlICJGdW5jdG9ySW5wdXRDdXJzb3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yV2ViUHJvdG9jb2xU
eXBlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTQsMTkgKzU0LDE5IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+IGJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0Rm9yUG9zaXRpb24oY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9uKQorc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4gYnVp
bGRJbnNwZWN0b3JPYmplY3RGb3JQb3NpdGlvbihjb25zdCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRp
b24pCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uPiBw
b3NpdGlvbk9iamVjdCA9IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uOjpjcmVh
dGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVBvc2l0
aW9uPiBwb3NpdGlvbk9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5
UG9zaXRpb246OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWdtZW50T2Zmc2V0KHBvc2l0aW9uLnNl
Z21lbnRPZmZzZXQpCiAgICAgICAgIC5zZXRJbnB1dE9mZnNldChwb3NpdGlvbi5pbnB1dE9mZnNl
dCk7CiAKICAgICByZXR1cm4gcG9zaXRpb25PYmplY3QucmVsZWFzZSgpOwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dD4gYnVpbGRJbnNwZWN0
b3JPYmplY3RGb3JJbnB1dChjb25zdCBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlJiBpbnB1dCwg
c2l6ZV90IG9mZnNldCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6UmVwbGF5SW5wdXQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQoY29uc3QgTm9u
ZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSYgaW5wdXQsIHNpemVfdCBvZmZzZXQpCiB7CiAgICAgRW5j
b2RlZFZhbHVlIGVuY29kZWRJbnB1dCA9IEVuY29kaW5nVHJhaXRzPE5vbmRldGVybWluaXN0aWNJ
bnB1dEJhc2U+OjplbmNvZGVWYWx1ZShpbnB1dCk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
ZXBsYXk6OlJlcGxheUlucHV0PiBpbnB1dE9iamVjdCA9IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJl
cGxheUlucHV0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBs
YXk6OlJlcGxheUlucHV0PiBpbnB1dE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxh
eTo6UmVwbGF5SW5wdXQ6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRUeXBlKGlucHV0LnR5cGUoKSkK
ICAgICAgICAgLnNldE9mZnNldChvZmZzZXQpCiAgICAgICAgIC5zZXREYXRhKGVuY29kZWRJbnB1
dC5hc09iamVjdCgpKTsKQEAgLTc0LDE1ICs3NCwxNSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dD4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JJbnB1
dAogICAgIHJldHVybiBpbnB1dE9iamVjdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheVNlc3Npb24+IGJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0Rm9yU2Vzc2lvbihQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IHBycFNlc3Npb24pCitzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVNlc3Npb24+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2Vzc2lvbihQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+
IHBycFNlc3Npb24pCiB7CiAgICAgUmVmUHRyPFJlcGxheVNlc3Npb24+IHNlc3Npb24gPSBwcnBT
ZXNzaW9uOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U2VnbWVudElkZW50aWZpZXI+
PiBzZWdtZW50cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTZWdtZW50SWRlbnRpZmllcj46OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTZWdtZW50SWRlbnRp
Zmllcj4+IHNlZ21lbnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U2VnbWVudElkZW50
aWZpZXI+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoYXV0byBpdCA9IHNlc3Npb24tPmJlZ2luKCk7
IGl0ICE9IHNlc3Npb24tPmVuZCgpOyArK2l0KQogICAgICAgICBzZWdtZW50cy0+YWRkSXRlbSgo
Kml0KS0+aWRlbnRpZmllcigpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpS
ZXBsYXlTZXNzaW9uPiBzZXNzaW9uT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5
U2Vzc2lvbjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5
OjpSZXBsYXlTZXNzaW9uPiBzZXNzaW9uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVw
bGF5OjpSZXBsYXlTZXNzaW9uOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQoc2Vzc2lvbi0+aWRl
bnRpZmllcigpKQogICAgICAgICAuc2V0VGltZXN0YW1wKHNlc3Npb24tPnRpbWVzdGFtcCgpKQog
ICAgICAgICAuc2V0U2VnbWVudHMoc2VnbWVudHMucmVsZWFzZSgpKTsKQEAgLTkwLDY1ICs5MCw2
NSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlTZXNzaW9u
PiBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlcwogICAgIHJldHVybiBzZXNzaW9uT2JqZWN0LnJl
bGVhc2UoKTsKIH0KIAotc3RhdGljIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25TdGF0ZSBi
dWlsZEluc3BlY3Rvck9iamVjdEZvclNlc3Npb25TdGF0ZShXZWJDb3JlOjpTZXNzaW9uU3RhdGUg
c2Vzc2lvblN0YXRlKQorc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lv
blN0YXRlIGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2Vzc2lvblN0YXRlKFdlYkNvcmU6OlNlc3Np
b25TdGF0ZSBzZXNzaW9uU3RhdGUpCiB7CiAgICAgc3dpdGNoIChzZXNzaW9uU3RhdGUpIHsKLSAg
ICBjYXNlIFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6Q2FwdHVyaW5nOiByZXR1cm4gVHlwZUJ1aWxk
ZXI6OlJlcGxheTo6U2Vzc2lvblN0YXRlOjpDYXB0dXJpbmc7Ci0gICAgY2FzZSBXZWJDb3JlOjpT
ZXNzaW9uU3RhdGU6OkluYWN0aXZlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lv
blN0YXRlOjpJbmFjdGl2ZTsKLSAgICBjYXNlIFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6UmVwbGF5
aW5nOiByZXR1cm4gVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblN0YXRlOjpSZXBsYXlpbmc7
CisgICAgY2FzZSBXZWJDb3JlOjpTZXNzaW9uU3RhdGU6OkNhcHR1cmluZzogcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblN0YXRlOjpDYXB0dXJpbmc7CisgICAgY2Fz
ZSBXZWJDb3JlOjpTZXNzaW9uU3RhdGU6OkluYWN0aXZlOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpTZXNzaW9uU3RhdGU6OkluYWN0aXZlOworICAgIGNhc2UgV2ViQ29yZTo6
U2Vzc2lvblN0YXRlOjpSZXBsYXlpbmc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBs
YXk6OlNlc3Npb25TdGF0ZTo6UmVwbGF5aW5nOwogICAgIH0KIH0KIAotc3RhdGljIFR5cGVCdWls
ZGVyOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZSBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnRT
dGF0ZShXZWJDb3JlOjpTZWdtZW50U3RhdGUgc2VnbWVudFN0YXRlKQorc3RhdGljIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRlIGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9y
U2VnbWVudFN0YXRlKFdlYkNvcmU6OlNlZ21lbnRTdGF0ZSBzZWdtZW50U3RhdGUpCiB7CiAgICAg
c3dpdGNoIChzZWdtZW50U3RhdGUpIHsKLSAgICBjYXNlIFdlYkNvcmU6OlNlZ21lbnRTdGF0ZTo6
QXBwZW5kaW5nOiByZXR1cm4gVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2VnbWVudFN0YXRlOjpBcHBl
bmRpbmc7Ci0gICAgY2FzZSBXZWJDb3JlOjpTZWdtZW50U3RhdGU6OlVubG9hZGVkOiByZXR1cm4g
VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2VnbWVudFN0YXRlOjpVbmxvYWRlZDsKLSAgICBjYXNlIFdl
YkNvcmU6OlNlZ21lbnRTdGF0ZTo6TG9hZGVkOiByZXR1cm4gVHlwZUJ1aWxkZXI6OlJlcGxheTo6
U2VnbWVudFN0YXRlOjpMb2FkZWQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpTZWdtZW50U3RhdGU6OkRp
c3BhdGNoaW5nOiByZXR1cm4gVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2VnbWVudFN0YXRlOjpEaXNw
YXRjaGluZzsKKyAgICBjYXNlIFdlYkNvcmU6OlNlZ21lbnRTdGF0ZTo6QXBwZW5kaW5nOiByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZWdtZW50U3RhdGU6OkFwcGVuZGluZzsK
KyAgICBjYXNlIFdlYkNvcmU6OlNlZ21lbnRTdGF0ZTo6VW5sb2FkZWQ6IHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6VW5sb2FkZWQ7CisgICAgY2FzZSBX
ZWJDb3JlOjpTZWdtZW50U3RhdGU6OkxvYWRlZDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlcGxheTo6U2VnbWVudFN0YXRlOjpMb2FkZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpTZWdtZW50
U3RhdGU6OkRpc3BhdGNoaW5nOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpT
ZWdtZW50U3RhdGU6OkRpc3BhdGNoaW5nOwogICAgIH0KIH0KIAogY2xhc3MgU2VyaWFsaXplSW5w
dXRUb0pTT05GdW5jdG9yIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0Pj4gUmV0dXJuVHlw
ZTsKKyAgICB0eXBlZGVmIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlJbnB1dD4+IFJldHVyblR5cGU7CiAKICAg
ICBTZXJpYWxpemVJbnB1dFRvSlNPTkZ1bmN0b3IoKQotICAgICAgICA6IG1faW5wdXRzKFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dD46OmNyZWF0ZSgp
KSB7IH0KKyAgICAgICAgOiBtX2lucHV0cyhJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0Pjo6Y3JlYXRlKCkpIHsgfQogICAg
IH5TZXJpYWxpemVJbnB1dFRvSlNPTkZ1bmN0b3IoKSB7IH0KIAogICAgIHZvaWQgb3BlcmF0b3Io
KShzaXplX3QgaW5kZXgsIGNvbnN0IE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIGlucHV0KQog
ICAgIHsKICAgICAgICAgTE9HKFdlYlJlcGxheSwgIiUtMjVzIFdyaXRpbmcgJTV6dTogJXNcbiIs
ICJbU2VyaWFsaXplSW5wdXRdIiwgaW5kZXgsIGlucHV0LT50eXBlKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOwogCi0gICAgICAgIGlmIChSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVw
bGF5SW5wdXQ+IHNlcmlhbGl6ZWRJbnB1dCA9IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQo
KmlucHV0LCBpbmRleCkpCisgICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UmVwbGF5OjpSZXBsYXlJbnB1dD4gc2VyaWFsaXplZElucHV0ID0gYnVpbGRJbnNwZWN0b3JPYmpl
Y3RGb3JJbnB1dCgqaW5wdXQsIGluZGV4KSkKICAgICAgICAgICAgIG1faW5wdXRzLT5hZGRJdGVt
KHNlcmlhbGl6ZWRJbnB1dC5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIFJldHVyblR5cGUgcmV0
dXJuVmFsdWUoKSB7IHJldHVybiBtX2lucHV0cy5yZWxlYXNlKCk7IH0KIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1
dD4+IG1faW5wdXRzOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0Pj4gbV9pbnB1dHM7CiB9OwogCi1z
dGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4gYnVp
bGRJbnNwZWN0b3JPYmplY3RGb3JTZWdtZW50KFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21l
bnQ+IHBycFNlZ21lbnQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZXBsYXk6OlNlc3Npb25TZWdtZW50PiBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnQoUGFz
c1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gcHJwU2VnbWVudCkKIHsKICAgICBSZWZQdHI8
UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQgPSBwcnBTZWdtZW50OwotICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZT4+
IHF1ZXVlc09iamVjdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UmVwbGF5OjpS
ZXBsYXlJbnB1dFF1ZXVlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZT4+
IHF1ZXVlc09iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZT46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KElucHV0UXVldWU6OkNvdW50KTsg
aSsrKSB7CiAgICAgICAgIFNlcmlhbGl6ZUlucHV0VG9KU09ORnVuY3RvciBjb2xsZWN0b3I7CiAg
ICAgICAgIElucHV0UXVldWUgcXVldWUgPSBzdGF0aWNfY2FzdDxJbnB1dFF1ZXVlPihpKTsKICAg
ICAgICAgUmVmUHRyPEZ1bmN0b3JJbnB1dEN1cnNvcj4gZnVuY3RvckN1cnNvciA9IEZ1bmN0b3JJ
bnB1dEN1cnNvcjo6Y3JlYXRlKHNlZ21lbnQpOwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0Pj4gcXVldWVJbnB1dHMgPSBm
dW5jdG9yQ3Vyc29yLT5mb3JFYWNoSW5wdXRJblF1ZXVlKHF1ZXVlLCBjb2xsZWN0b3IpOworICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpSZXBsYXlJbnB1dD4+IHF1ZXVlSW5wdXRzID0gZnVuY3RvckN1cnNvci0+Zm9y
RWFjaElucHV0SW5RdWV1ZShxdWV1ZSwgY29sbGVjdG9yKTsKIAotICAgICAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZT4gcXVldWVPYmplY3QgPSBUeXBlQnVp
bGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dFF1ZXVlOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlJbnB1dFF1ZXVlPiBxdWV1ZU9iamVj
dCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZTo6Y3JlYXRl
KCkKICAgICAgICAgICAgIC5zZXRUeXBlKEVuY29kaW5nVHJhaXRzPElucHV0UXVldWU+OjplbmNv
ZGVWYWx1ZShxdWV1ZSkuY29udmVydFRvPFN0cmluZz4oKSkKICAgICAgICAgICAgIC5zZXRJbnB1
dHMocXVldWVJbnB1dHMpOwogCiAgICAgICAgIHF1ZXVlc09iamVjdC0+YWRkSXRlbShxdWV1ZU9i
amVjdC5yZWxlYXNlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5
OjpTZXNzaW9uU2VnbWVudD4gc2VnbWVudE9iamVjdCA9IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNl
c3Npb25TZWdtZW50OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZXBsYXk6OlNlc3Npb25TZWdtZW50PiBzZWdtZW50T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudDo6Y3JlYXRlKCkKICAgICAgICAgLnNldElkKHNlZ21l
bnQtPmlkZW50aWZpZXIoKSkKICAgICAgICAgLnNldFRpbWVzdGFtcChzZWdtZW50LT50aW1lc3Rh
bXAoKSkKICAgICAgICAgLnNldFF1ZXVlcyhxdWV1ZXNPYmplY3QucmVsZWFzZSgpKTsKQEAgLTM4
OCw3ICszODgsNyBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpjYW5jZWxQbGF5YmFjayhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcpCiAgICAgbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5j
YW5jZWxQbGF5YmFjaygpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpzd2l0Y2hT
ZXNzaW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vz
c2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnN3
aXRjaFNlc3Npb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKGlk
ZW50aWZpZXIgPiAwKTsKIApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OnN3aXRjaFNlc3Npb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBUeXBlQnVpbGRl
cjo6CiAgICAgbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5zd2l0Y2hTZXNzaW9uKHNlc3Npb24p
OwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjppbnNlcnRTZXNzaW9uU2VnbWVudChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVu
dGlmaWVyIHNlc3Npb25JZGVudGlmaWVyLCBTZWdtZW50SWRlbnRpZmllciBzZWdtZW50SWRlbnRp
ZmllciwgaW50IHNlZ21lbnRJbmRleCkKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omluc2Vy
dFNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciBzZXNzaW9uSWRlbnRpZmllciwgU2VnbWVu
dElkZW50aWZpZXIgc2VnbWVudElkZW50aWZpZXIsIGludCBzZWdtZW50SW5kZXgpCiB7CiAgICAg
QVNTRVJUKHNlc3Npb25JZGVudGlmaWVyID4gMCk7CiAgICAgQVNTRVJUKHNlZ21lbnRJZGVudGlm
aWVyID4gMCk7CkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6
aW5zZXJ0U2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBUeXBlQnUKICAg
ICBzZXNzaW9uTW9kaWZpZWQoc2Vzc2lvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdl
bnQ6OnJlbW92ZVNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHlwZUJ1
aWxkZXI6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgaW50IHNlZ21lbnRJ
bmRleCkKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlbW92ZVNlc3Npb25TZWdtZW50KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNz
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBpbnQgc2VnbWVudEluZGV4KQogewogICAgIEFTU0VS
VChpZGVudGlmaWVyID4gMCk7CiAgICAgQVNTRVJUKHNlZ21lbnRJbmRleCA+PSAwKTsKQEAgLTQ4
MCw3ICs0ODAsNyBAQCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBJbnNwZWN0b3JS
ZXBsYXlBZ2VudDo6ZmluZFNlZ21lbnQoRXJyb3JTdHJpbmcqCiAgICAgcmV0dXJuIGl0LT52YWx1
ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y3VycmVudFJlcGxheVN0YXRlKEVy
cm9yU3RyaW5nKiwgVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIqIHNlc3Np
b25JZGVudGlmaWVyLCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFR5cGVCdWlsZGVyOjpSZXBsYXk6
OlNlZ21lbnRJZGVudGlmaWVyPiogc2VnbWVudElkZW50aWZpZXIsIFR5cGVCdWlsZGVyOjpSZXBs
YXk6OlNlc3Npb25TdGF0ZSogc2Vzc2lvblN0YXRlLCBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdt
ZW50U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxh
eVBvc2l0aW9uPiYgcmVwbGF5UG9zaXRpb24pCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpj
dXJyZW50UmVwbGF5U3RhdGUoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBs
YXk6OlNlc3Npb25JZGVudGlmaWVyKiBzZXNzaW9uSWRlbnRpZmllciwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50
aWZpZXI+KiBzZWdtZW50SWRlbnRpZmllciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpT
ZXNzaW9uU3RhdGUqIHNlc3Npb25TdGF0ZSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpT
ZWdtZW50U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6UmVwbGF5UG9zaXRpb24+JiByZXBsYXlQb3NpdGlvbikKIHsKICAgICAqc2Vzc2lvblN0
YXRlID0gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZXNzaW9uU3RhdGUobV9wYWdlLnJlcGxheUNv
bnRyb2xsZXIoKS5zZXNzaW9uU3RhdGUoKSk7CiAgICAgKnNlZ21lbnRTdGF0ZSA9IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0Rm9yU2VnbWVudFN0YXRlKG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc2Vn
bWVudFN0YXRlKCkpOwpAQCAtNDkyLDE0ICs0OTIsMTQgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlB
Z2VudDo6Y3VycmVudFJlcGxheVN0YXRlKEVycm9yU3RyaW5nKiwgVHlwZUJ1aWxkZXI6OlJlcGxh
eToKICAgICByZXBsYXlQb3NpdGlvbiA9IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yUG9zaXRpb24o
bV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5jdXJyZW50UG9zaXRpb24oKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldEF2YWlsYWJsZVNlc3Npb25zKEVycm9yU3RyaW5nKiwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTZXNzaW9uSWRlbnRpZmllcj4+JiBzZXNzaW9uc0xp
c3QpCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpnZXRBdmFpbGFibGVTZXNzaW9ucyhFcnJv
clN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTZXNzaW9uSWRlbnRp
Zmllcj4+JiBzZXNzaW9uc0xpc3QpCiB7Ci0gICAgc2Vzc2lvbnNMaXN0ID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyPjo6Y3JlYXRlKCk7
CisgICAgc2Vzc2lvbnNMaXN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllcj46OmNyZWF0ZSgpOwogICAgIGZv
ciAoYXV0byYgcGFpciA6IG1fc2Vzc2lvbnNNYXApCiAgICAgICAgIHNlc3Npb25zTGlzdC0+YWRk
SXRlbShwYWlyLmtleSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldFNlc3Np
b25EYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vz
c2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJl
cGxheVNlc3Npb24+JiBzZXJpYWxpemVkT2JqZWN0KQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2Vu
dDo6Z2V0U2Vzc2lvbkRhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVNlc3Npb24+JiBzZXJpYWxpemVkT2JqZWN0
KQogewogICAgIFJlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uID0gZmluZFNlc3Npb24oZXJy
b3JTdHJpbmcsIGlkZW50aWZpZXIpOwogICAgIGlmICghc2Vzc2lvbikgewpAQCAtNTEwLDcgKzUx
MCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldFNlc3Npb25EYXRhKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgVHlwZUJ1aWxkZXI6CiAgICAgc2VyaWFsaXplZE9iamVjdCA9IGJ1
aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JSZXBsYXlBZ2VudDo6Z2V0U2VnbWVudERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBU
eXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+JiBzZXJpYWxpemVkT2JqZWN0KQor
dm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0U2VnbWVudERhdGEoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25T
ZWdtZW50PiYgc2VyaWFsaXplZE9iamVjdCkKIHsKICAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNl
Z21lbnQ+IHNlZ21lbnQgPSBmaW5kU2VnbWVudChlcnJvclN0cmluZywgaWRlbnRpZmllcik7CiAg
ICAgaWYgKCFzZWdtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXBsYXlBZ2VudC5oCmluZGV4IGY3YmNlNmY0Y2ZiMDlhZjRkNDJkYzE2ZjIxMzNiMjVmNTg3
OTQxYjQuLjAyY2M3ZTA3NGViZjA3OGQ2NjY1NzQ2M2VlM2VlODQ4NTYxYjdlZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCkBAIC0xMDEs
MTMgKzEwMSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBsYXliYWNrKEVy
cm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3dpdGNoU2Vzc2lvbihF
cnJvclN0cmluZyosIFNlc3Npb25JZGVudGlmaWVyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0U2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
ZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyLCBpbnQgc2VnbWVudEluZGV4KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcqLCBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyLCBpbnQgc2VnbWVudElu
ZGV4KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0U2Vzc2lvblNlZ21lbnQoRXJy
b3JTdHJpbmcqLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVy
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyLCBpbnQgc2Vn
bWVudEluZGV4KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvblNlZ21l
bnQoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVu
dGlmaWVyLCBpbnQgc2VnbWVudEluZGV4KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBj
dXJyZW50UmVwbGF5U3RhdGUoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
ZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXI+Kiwg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uU3RhdGUqLCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZSogc2VnbWVudFN0YXRlLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4mKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXZhaWxhYmxlU2Vzc2lvbnMoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllcj4+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFNlc3Npb25EYXRhKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJlcGxheTo6UmVwbGF5U2Vzc2lvbj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
U2VnbWVudERhdGEoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSZXBsYXk6
OlNlZ21lbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5
OjpTZXNzaW9uU2VnbWVudD4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3VycmVudFJl
cGxheVN0YXRlKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNz
aW9uSWRlbnRpZmllciosIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6
OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyPiosIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJlcGxheTo6U2Vzc2lvblN0YXRlKiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpT
ZWdtZW50U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6UmVwbGF5UG9zaXRpb24+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldEF2
YWlsYWJsZVNlc3Npb25zKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXI+PiYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRTZXNzaW9uRGF0YShFcnJvclN0cmluZyos
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVNlc3Npb24+Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldFNlZ21lbnREYXRhKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBmaW5kU2Vzc2lvbihFcnJvclN0cmluZyosIFNl
c3Npb25JZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCBiNDY4ZjM1NTY5OTRmNjY5YTYwODMyYWFhOWZl
MTk1YzA1YzBkMjQzLi45MDc4MWEyNzNkZGQ4MTE2MDRjNjc0MzYzYTRhYWMwYTVhMWM3MTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCkBAIC0yMDEsOSArMjAxLDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGUKICAgICBy
ZXR1cm4gaGVhZGVyc09iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5n
KGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nLCBEb2N1bWVudExvYWRlciogbG9hZGVy
KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3Vy
Y2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYg
dGltaW5nLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRlKCkKKyAgICByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc6OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXROYXZpZ2F0aW9uU3RhcnQobG9hZGVyLT50aW1pbmcoKS0+bmF2aWdhdGlv
blN0YXJ0KCkpCiAgICAgICAgIC5zZXREb21haW5Mb29rdXBTdGFydCh0aW1pbmcuZG9tYWluTG9v
a3VwU3RhcnQpCiAgICAgICAgIC5zZXREb21haW5Mb29rdXBFbmQodGltaW5nLmRvbWFpbkxvb2t1
cEVuZCkKQEAgLTIxNSw5ICsyMTUsOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGbwogICAgICAg
ICAucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dFVybChyZXF1ZXN0LnVybCgpLnN0cmluZygpKQogICAgICAgICAuc2V0TWV0aG9kKHJlcXVlc3Qu
aHR0cE1ldGhvZCgpKQogICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMo
cmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiBidWls
ZE9iamVjdEZvclJlc291cgogICAgIHJldHVybiByZXF1ZXN0T2JqZWN0OwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gYnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKIHsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291CiAgICAgZG91
YmxlIHN0YXR1cyA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gaGVhZGVycyA9IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRw
SGVhZGVyRmllbGRzKCkpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OlJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OlJlc3BvbnNlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpSZXNwb25zZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybChyZXNwb25z
ZS51cmwoKS5zdHJpbmcoKSkKICAgICAgICAgLnNldFN0YXR1cyhzdGF0dXMpCiAgICAgICAgIC5z
ZXRTdGF0dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCkBAIC0yNDksMTQgKzI0OSwx
NCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdQogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsK
IH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlZFJlc291cmNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQorc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxk
T2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBE
b2N1bWVudExvYWRlciogbG9hZGVyKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2VPYmplY3QgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZTo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNl
T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwoY2FjaGVkUmVzb3VyY2UtPnVybCgpKQogICAgICAgICAu
c2V0VHlwZShJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZUpzb24oKmNhY2hl
ZFJlc291cmNlKSkKICAgICAgICAgLnNldEJvZHlTaXplKGNhY2hlZFJlc291cmNlLT5lbmNvZGVk
U2l6ZSgpKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZShjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSwgbG9hZGVyKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCksIGxv
YWRlcik7CiAgICAgaWYgKHJlc291cmNlUmVzcG9uc2UpCiAgICAgICAgIHJlc291cmNlT2JqZWN0
LT5zZXRSZXNwb25zZShyZXNvdXJjZVJlc3BvbnNlKTsKIApAQCAtMzE3LDkgKzMxNyw5IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsICJuby1jYWNoZSIpOwogICAgIH0KIAotICAg
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUg
PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSk7CisgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSA9IEluc3BlY3Rv
clBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1
aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHIpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxv
YWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1f
cGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJ
ZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNl
UmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAh
PSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVs
bHB0cik7CiB9CiAKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQog
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RG
b3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlLCBsb2FkZXIpOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwgbG9hZGVyKTsKIAogICAgIGJvb2wg
aXNOb3RNb2RpZmllZCA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OwogCkBAIC0z
NTAsNyArMzUwLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUKICAgICBpZiAoY2FjaGVkUmVz
b3VyY2UpIHsKICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9tIGNhY2hlZCByZXNvdXJjZSBp
biBjYXNlIHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCiAgICAgICAgIGlmIChyZXNvdXJj
ZVJlc3BvbnNlICYmIHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OlJlc3BvbnNlOjpNaW1lVHlwZSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoSW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6Ok1pbWVUeXBlLCBjYWNoZWRSZXNvdXJjZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRDYWNo
ZWRSZXNvdXJjZShyZXF1ZXN0SWQsIGNhY2hlZFJlc291cmNlKTsKICAgICB9CiAKQEAgLTQ1NCw3
ICs0NTQsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogICAgICAgICBtX3Jlc291cmNlc0Rh
dGEtPnJldXNlWEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIHJhd1JlcXVlc3RJZCk7CiAgICAgfQog
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4g
aW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8g
bG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVp
bGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1
bWVudCgpIDogbnVsbHB0cik7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFNl
cnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXIt
PnVybCgpLnN0cmluZygpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2Jq
ZWN0Rm9yQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRlcikpOwogfQpAQCAtNTUxLDE5ICs1
NTEsMTkgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTY2hlZHVsZVN0eWxlUmVj
YWxjdWxhdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIG1fc3R5bGVSZWNhbGN1bGF0
aW9uSW5pdGlhdG9yID0gYnVpbGRJbml0aWF0b3JPYmplY3QoZG9jdW1lbnQpOwogfQogCi1QYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50
KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIFNj
cmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CiAgICAgaWYgKHN0YWNr
VHJhY2UgJiYgc3RhY2tUcmFjZS0+c2l6ZSgpID4gMCkgewotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCi0gICAg
ICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0
b3I6OlR5cGU6OlNjcmlwdCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRUeXBlKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcjo6VHlwZTo6U2NyaXB0KTsKICAgICAg
ICAgaW5pdGlhdG9yT2JqZWN0LT5zZXRTdGFja1RyYWNlKHN0YWNrVHJhY2UtPmJ1aWxkSW5zcGVj
dG9yQXJyYXkoKSk7CiAgICAgICAgIHJldHVybiBpbml0aWF0b3JPYmplY3Q7CiAgICAgfQogCiAg
ICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSkg
ewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlh
dG9yPiBpbml0aWF0b3JPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJ
bml0aWF0b3I6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlBhcnNlcik7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVj
dCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcjo6Y3JlYXRlKCkKKyAg
ICAgICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRv
cjo6VHlwZTo6UGFyc2VyKTsKICAgICAgICAgaW5pdGlhdG9yT2JqZWN0LT5zZXRVcmwoZG9jdW1l
bnQtPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgaW5pdGlhdG9yT2JqZWN0LT5zZXRMaW5lTnVt
YmVyKGRvY3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKS0+dGV4dFBvc2l0aW9uKCku
bV9saW5lLm9uZUJhc2VkSW50KCkpOwogICAgICAgICByZXR1cm4gaW5pdGlhdG9yT2JqZWN0OwpA
QCAtNTcyLDggKzU3Miw4IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpiCiAgICAgaWYgKG1faXNS
ZWNhbGN1bGF0aW5nU3R5bGUgJiYgbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3IpCiAgICAg
ICAgIHJldHVybiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKIAotICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCi0gICAg
ICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcjo6
VHlwZTo6T3RoZXIpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Oklu
aXRpYXRvcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpPdGhlcikKICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IApAQCAtNTg2LDE0ICs1ODYsMTQgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRD
cmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdAogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0
UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OldlYlNvY2tldFJlcXVlc3Q6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQogICAgICAgICAu
c2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRz
KCkpKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hh
a2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJy
ZW50VGltZSgpLCByZXF1ZXN0T2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0UmVzcG9uc2U+IHJl
c3BvbnNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0
UmVzcG9uc2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OldlYlNvY2tldFJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0U3Rh
dHVzKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCiAgICAgICAgIC5zZXRTdGF0dXNUZXh0KHJl
c3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0
Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKQEAgLTYwNyw3ICs2MDcs
NyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJT
b2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUpCiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1h
c2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFt
ZS5wYXlsb2FkTGVuZ3RoKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLAogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFt
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkK
IHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2ViU29ja2V0
RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6V2Vi
U29ja2V0RnJhbWU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVhdGUoKQogICAgICAgICAuc2V0T3Bjb2RlKGZy
YW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0
UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CmluZGV4IDRjODhhYzNkODZmNWRiMWM1NWE1MTExNDdiMjczOWY4ZTQ4ZjQzZWQuLjljYTQ4M2Rm
N2VjYjVjYTQ2YWY2MjE4YWYyMDQ3OWEzMmRlOWJkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTEwLDcgKzExMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKICAgICB2b2lkIGRpZFNj
aGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Kik7CiAKLSAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0b3JP
YmplY3QoRG9jdW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkluaXRpYXRvcj4gYnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqKTsKIAogI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKICAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCk7CkBAIC0xNTMsNyArMTUz
LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8VGhyZWFkYWJsZUxvYWRlckNsaWVu
dCosIFJlZlB0cjxYSFJSZXBsYXlEYXRhPj4gUGVuZGluZ1hIUlJlcGxheURhdGFNYXA7CiAgICAg
UGVuZGluZ1hIUlJlcGxheURhdGFNYXAgbV9wZW5kaW5nWEhSUmVwbGF5RGF0YTsKICAgICAvLyBG
SVhNRTogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxl
IHJlY2FsY3VsYXRpb24uCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdv
cms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2FsY3Vs
YXRpb25Jbml0aWF0b3I7CiAgICAgYm9vbCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmlu
ZGV4IDhmMmI4MmI3ZjZiNGJmYTI5MDk2MzcxYWUyYTBkYTA2N2U3Zjg5NDQuLjFmZmRkNGM1NDI5
ZDNjZTg2OGI5NDk3NTY4NDNiODQ2ZDczMDY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8eWFyci9SZWd1bGFyRXhw
cmVzc2lvbi5oPgogCi11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsKK3VzaW5n
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OwogdXNpbmcgV2ViQ29yZTo6UnVsZVNvdXJjZURh
dGFMaXN0OwogdXNpbmcgV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE7CiAKQEAgLTE0OCwxNCAr
MTQ4LDE0IEBAIGVudW0gTWVkaWFMaXN0U291cmNlIHsKICAgICBNZWRpYUxpc3RTb3VyY2VJbXBv
cnRSdWxlCiB9OwogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlNvdXJjZVJhbmdlPiBidWlsZFNvdXJjZVJhbmdlT2JqZWN0KGNvbnN0IFNvdXJjZVJhbmdl
JiByYW5nZSwgVmVjdG9yPHNpemVfdD4qIGxpbmVFbmRpbmdzKQorc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRTb3VyY2VSYW5nZU9i
amVjdChjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UsIFZlY3RvcjxzaXplX3Q+KiBsaW5lRW5kaW5n
cykKIHsKICAgICBpZiAoIWxpbmVFbmRpbmdzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBUZXh0UG9zaXRpb24gc3RhcnQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjp0ZXh0UG9zaXRp
b25Gcm9tT2Zmc2V0KHJhbmdlLnN0YXJ0LCAqbGluZUVuZGluZ3MpOwogICAgIFRleHRQb3NpdGlv
biBlbmQgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjp0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHJh
bmdlLmVuZCwgKmxpbmVFbmRpbmdzKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNvdXJjZVJhbmdlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlNvdXJjZVJhbmdlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlNvdXJjZVJhbmdlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNv
dXJjZVJhbmdlOjpjcmVhdGUoKQogICAgICAgICAuc2V0U3RhcnRMaW5lKHN0YXJ0Lm1fbGluZS56
ZXJvQmFzZWRJbnQoKSkKICAgICAgICAgLnNldFN0YXJ0Q29sdW1uKHN0YXJ0Lm1fY29sdW1uLnpl
cm9CYXNlZEludCgpKQogICAgICAgICAuc2V0RW5kTGluZShlbmQubV9saW5lLnplcm9CYXNlZElu
dCgpKQpAQCAtMTYzLDI2ICsxNjMsMjYgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRTb3VyY2VSYW5nZU9iamUKICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4gYnVpbGRNZWRpYU9iamVjdChjb25zdCBNZWRp
YUxpc3QqIG1lZGlhLCBNZWRpYUxpc3RTb3VyY2UgbWVkaWFMaXN0U291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTTWVkaWE+IGJ1aWxkTWVkaWFPYmplY3QoY29uc3QgTWVkaWFMaXN0KiBtZWRpYSwgTWVk
aWFMaXN0U291cmNlIG1lZGlhTGlzdFNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7
CiAgICAgLy8gTWFrZSBjZXJ0YWluIGNvbXBpbGVycyBoYXBweSBieSBpbml0aWFsaXppbmcgfHNv
dXJjZXwgdXAtZnJvbnQuCi0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRp
YTo6U291cmNlIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6
OlNvdXJjZTo6SW5saW5lU2hlZXQ7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NN
ZWRpYTo6U291cmNlIHNvdXJjZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE6
OlNvdXJjZTo6SW5saW5lU2hlZXQ7CiAgICAgc3dpdGNoIChtZWRpYUxpc3RTb3VyY2UpIHsKICAg
ICBjYXNlIE1lZGlhTGlzdFNvdXJjZU1lZGlhUnVsZToKLSAgICAgICAgc291cmNlID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpNZWRpYVJ1bGU7CisgICAg
ICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6
TWVkaWFSdWxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTGlzdFNvdXJjZUltcG9y
dFJ1bGU6Ci0gICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
TWVkaWE6OlNvdXJjZTo6SW1wb3J0UnVsZTsKKyAgICAgICAgc291cmNlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbXBvcnRSdWxlOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lZGlhTGlzdFNvdXJjZUxpbmtlZFNoZWV0OgotICAgICAgICBzb3VyY2Ug
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OkxpbmtlZFNo
ZWV0OworICAgICAgICBzb3VyY2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlh
OjpTb3VyY2U6OkxpbmtlZFNoZWV0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTGlz
dFNvdXJjZUlubGluZVNoZWV0OgotICAgICAgICBzb3VyY2UgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OworICAgICAgICBzb3VyY2Ug
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0
OwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NNZWRpYT4gbWVkaWFPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU01lZGlhOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU01lZGlhPiBtZWRpYU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTTWVkaWE6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRUZXh0KG1lZGlhLT5tZWRpYVRleHQoKSkK
ICAgICAgICAgLnNldFNvdXJjZShzb3VyY2UpOwogCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTUnVsZSogcnVsZSkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENT
U1J1bGUqIHJ1bGUsIEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+
KiBtZWRpYUFycmF5KQorc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENTU1J1bGUqIHJ1
bGUsIEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE+KiBtZWRpYUFycmF5
KQogewogICAgIE1lZGlhTGlzdCogbWVkaWFMaXN0OwogICAgIENTU1J1bGUqIHBhcmVudFJ1bGUg
PSBydWxlOwpAQCAtMzA2LDExICszMDYsMTEgQEAgSW5zcGVjdG9yU3R5bGU6On5JbnNwZWN0b3JT
dHlsZSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdAorUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHls
ZTo6YnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IHN0eWxlV2l0aFByb3BlcnRpZXMo
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gcmVzdWx0
ID0gc3R5bGVXaXRoUHJvcGVydGllcygpOwogICAgIGlmICghbV9zdHlsZUlkLmlzRW1wdHkoKSkK
LSAgICAgICAgcmVzdWx0LT5zZXRTdHlsZUlkKG1fc3R5bGVJZC5hc1Byb3RvY29sVmFsdWU8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZUlkPigpKTsKKyAgICAgICAgcmVzdWx0
LT5zZXRTdHlsZUlkKG1fc3R5bGVJZC5hc1Byb3RvY29sVmFsdWU8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZUlkPigpKTsKIAogICAgIHJlc3VsdC0+c2V0V2lkdGgobV9zdHlsZS0+
Z2V0UHJvcGVydHlWYWx1ZSgid2lkdGgiKSk7CiAgICAgcmVzdWx0LT5zZXRIZWlnaHQobV9zdHls
ZS0+Z2V0UHJvcGVydHlWYWx1ZSgiaGVpZ2h0IikpOwpAQCAtMzIyLDE1ICszMjIsMTUgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JT
dHlsZTo6YnVpbGRPYmplY3RGb3IKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IEluc3BlY3RvclN0eWxlOjpi
dWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHls
ZVByb3BlcnR5Pj4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiByZXN1bHQg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1
dGVkU3R5bGVQcm9wZXJ0eT4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pjo6Y3JlYXRl
KCk7CiAgICAgVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+IHByb3BlcnRpZXM7CiAgICAg
cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKCZwcm9wZXJ0aWVzKTsKIAogICAgIGZvciAoVmVjdG9yPElu
c3BlY3RvclN0eWxlUHJvcGVydHk+OjppdGVyYXRvciBpdCA9IHByb3BlcnRpZXMuYmVnaW4oKSwg
aXRFbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOyBpdCAhPSBpdEVuZDsgKytpdCkgewogICAgICAgICBj
b25zdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEmIHByb3BlcnR5RW50cnkgPSBpdC0+c291cmNlRGF0
YTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0
ZWRTdHlsZVByb3BlcnR5PiBlbnRyeSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
Q29tcHV0ZWRTdHlsZVByb3BlcnR5OjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+IGVudHJ5ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk6OmNyZWF0ZSgpCiAg
ICAgICAgICAgICAuc2V0TmFtZShwcm9wZXJ0eUVudHJ5Lm5hbWUpCiAgICAgICAgICAgICAuc2V0
VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSk7CiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShlbnRy
eSk7CkBAIC01MDksMTQgKzUwOSwxNCBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0ZUFs
bFByb3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiByZXN1bAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3QKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5
bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxJbnNwZWN0b3JT
dHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJv
cGVydGllcyk7CiAKLSAgICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eT4+IHByb3BlcnRpZXNPYmplY3QgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+PiBzaG9ydGhhbmRFbnRy
aWVzID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46
OmNyZWF0ZSgpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4+IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9w
ZXJ0eTsKKyAgICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9w
ZXJ0eT4+IHByb3BlcnRpZXNPYmplY3QgPSBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+PiBzaG9ydGhhbmRFbnRyaWVzID0gQXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpOworICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0
eT4+IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eTsKICAgICBIYXNoU2V0PFN0
cmluZz4gZm91bmRTaG9ydGhhbmRzOwogICAgIFN0cmluZyBwcmV2aW91c1ByaW9yaXR5OwogICAg
IFN0cmluZyBwcmV2aW91c1N0YXR1czsKQEAgLTUzMCwxMyArNTMwLDEzIEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0
eWxlV2l0aFByb3BlCiAKICAgICAgICAgLy8gVmlzdWFsIFN0dWRpbyBkaXNhZ3JlZXMgd2l0aCBv
dGhlciBjb21waWxlcnMgYXMgdG8gd2hldGhlciAnY2xhc3MnIGlzIG5lZWRlZCBoZXJlLgogI2lm
IENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGVudW0gY2xhc3MgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1cyBzdGF0dXM7CisgICAgICAgIGVudW0gY2xhc3MgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1cyBzdGF0dXM7CiAjZWxzZQot
ICAgICAgICBlbnVtIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0
dXMgc3RhdHVzOworICAgICAgICBlbnVtIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJv
cGVydHlTdGF0dXMgc3RhdHVzOwogI2VuZGlmCi0gICAgICAgIHN0YXR1cyA9IGl0LT5kaXNhYmxl
ZCA/IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkRpc2Fi
bGVkIDogSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6QWN0
aXZlOworICAgICAgICBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpEaXNhYmxlZCA6IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVydHkgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4gcHJvcGVydHkgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNl
dE5hbWUobmFtZS5sb3dlcigpKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnku
dmFsdWUpOwogCkBAIC01NjksMjIgKzU2OSwyMiBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZQog
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SUQo
bmFtZSk7CiAgICAgICAgICAgICAgICAgLy8gQ2Fub25pY2FsaXplIHByb3BlcnR5IG5hbWVzIHRv
IHRyZWF0IG5vbi1wcmVmaXhlZCBhbmQgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIHRo
ZSBzYW1lIChvcGFjaXR5IHZzLiAtd2Via2l0LW9wYWNpdHkpLgogICAgICAgICAgICAgICAgIFN0
cmluZyBjYW5vbmljYWxQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUlkID8gZ2V0UHJvcGVydHlOYW1l
U3RyaW5nKHByb3BlcnR5SWQpIDogbmFtZTsKLSAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRl
cmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmlu
ZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4+OjppdGVyYXRv
ciBhY3RpdmVJdCA9IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNh
bm9uaWNhbFByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ICE9IHBy
b3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5lbmQoKSkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvcGVydHlFbnRyeS5wYXJzZWRPaykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBzdWNjZXNzUHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpQcmlvcml0eSwgJnByZXZp
b3VzUHJpb3JpdHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzU3RhdHVz
ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNTdGF0dXMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBzdWNjZXNzUHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmlu
ZyhJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpQcmlvcml0eSwgJnByZXZp
b3VzUHJpb3JpdHkpOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzU3RhdHVz
ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eTo6U3RhdHVzLCAmcHJldmlvdXNTdGF0dXMpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHN1Y2Nlc3NTdGF0dXMgJiYgcHJldmlvdXNTdGF0dXMgIT0gImluYWN0aXZlIikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eUVudHJ5LmltcG9ydGFu
dCB8fCAhc3VjY2Vzc1ByaW9yaXR5KSAvLyBQcmlvcml0eSBub3Qgc2V0ID09ICJub3QgaW1wb3J0
YW50Ii4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzID09IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PSBJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmUpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5hY3RpdmF0ZSBhIG5vbi1pbXBvcnRhbnQgcHJvcGVy
dHkgZm9sbG93aW5nIHRoZSBzYW1lLW5hbWVkIGltcG9ydGFudCBwcm9wZXJ0eS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlT
dGF0dXM6OkluYWN0aXZlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcHJldmlvdXNQYXJzZWRPazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpQYXJzZWRPaywgJnByZXZpb3VzUGFy
c2VkT2spOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gYWN0aXZlSXQt
PnZhbHVlLT5nZXRCb29sZWFuKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6
OlBhcnNlZE9rLCAmcHJldmlvdXNQYXJzZWRPayk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc3VjY2VzcyAmJiAhcHJldmlvdXNQYXJzZWRPaykKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaG91bGRJbmFjdGl2YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
NTkyLDcgKzU5Miw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlCiAgICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJv
cGVydHlOYW1lLCBwcm9wZXJ0eSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkSW5hY3Rp
dmF0ZSkgewotICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNldFN0YXR1cyhJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFjdGl2ZSk7
CisgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUl0LT52YWx1ZS0+c2V0U3RhdHVzKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0aXZlKTsKICAgICAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LnNldChjYW5v
bmljYWxQcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtNjAwLDEzICs2MDAsMTMgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJv
cGUKICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0ICJpbXBsaWNpdCIgPT0gZmFsc2UuCiAgICAg
ICAgICAgICAgICAgaWYgKGltcGxpY2l0KQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eS0+
c2V0SW1wbGljaXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6U3R5bGU7CisgICAgICAgICAgICAg
ICAgc3RhdHVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6
U3R5bGU7CiAKICAgICAgICAgICAgICAgICBTdHJpbmcgc2hvcnRoYW5kID0gbV9zdHlsZS0+Z2V0
UHJvcGVydHlTaG9ydGhhbmQobmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzaG9ydGhhbmQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRTaG9ydGhhbmRzLmNv
bnRhaW5zKHNob3J0aGFuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2hvcnRo
YW5kcy5hZGQoc2hvcnRoYW5kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5PiBlbnRyeSA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk6OmNyZWF0ZSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTaG9ydGhhbmRF
bnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Ojpj
cmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXROYW1lKHNob3J0aGFuZCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUoc2hvcnRoYW5kVmFsdWUoc2hv
cnRoYW5kKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRFbnRyaWVzLT5hZGRJ
dGVtKGVudHJ5KTsKQEAgLTYxNiwxMSArNjE2LDExIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3Bl
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBEZWZhdWx0ICJzdGF0dXMiID09ICJzdHlsZSIuCi0g
ICAgICAgIGlmIChzdGF0dXMgIT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eVN0YXR1czo6U3R5bGUpCisgICAgICAgIGlmIChzdGF0dXMgIT0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6U3R5bGUpCiAgICAgICAgICAgICBwcm9wZXJ0
eS0+c2V0U3RhdHVzKHN0YXR1cyk7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKHByb3BlcnRpZXNPYmplY3Qp
CiAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKHNob3J0aGFuZEVudHJpZXMpOwogICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZSgpOwpAQCAtNzU1LDcgKzc1NSw3IEBAIE5ld0xpbmVBbmRXaGl0
ZXNwYWNlJiBJbnNwZWN0b3JTdHlsZTo6bmV3TGluZUFuZFdoaXRlc3BhY2VEZWxpbWl0ZXJzKCkg
Y29uc3QKICAgICByZXR1cm4gbV9mb3JtYXQ7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5
bGVTaGVldD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHBh
Z2VTdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW4gb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciogbGlzdGVuZXIp
CitQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNy
ZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFz
c1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVS
TCwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVj
dG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlkLCBwYWdlU3R5bGVTaGVldCwgb3JpZ2luLCBkb2N1
bWVudFVSTCwgbGlzdGVuZXIpKTsKIH0KQEAgLTc2OCw3ICs3NjgsNyBAQCBTdHJpbmcgSW5zcGVj
dG9yU3R5bGVTaGVldDo6c3R5bGVTaGVldFVSTChDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVl
dCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotSW5zcGVjdG9yU3R5bGVTaGVldDo6
SW5zcGVjdG9yU3R5bGVTaGVldChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3Qg
U3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQorSW5zcGVjdG9yU3R5bGVT
aGVldDo6SW5zcGVjdG9yU3R5bGVTaGVldChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwg
Y29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVl
dCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIDogbV9wYWdl
QWdlbnQocGFnZUFnZW50KQogICAgICwgbV9pZChpZCkKICAgICAsIG1fcGFnZVN0eWxlU2hlZXQo
cGFnZVN0eWxlU2hlZXQpCkBAIC05NTksNyArOTU5LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpydWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdAog
CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNo
ZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCkK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4g
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCkKIHsKICAgICBD
U1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXN0
eWxlU2hlZXQpCkBAIC05NjcsNyArOTY3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjoKIAog
ICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVsZUxpc3QgPSBhc0NTU1J1bGVMaXN0KHN0eWxl
U2hlZXQpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEJvZHk+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEJvZHk6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU3R5bGVTaGVldEJvZHk+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGVTaGVldEJvZHk6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdHlsZVNoZWV0SWQoaWQo
KSkKICAgICAgICAgLnNldFJ1bGVzKGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChjc3NSdWxlTGlzdC5n
ZXQoKSkpOwogCkBAIC05NzksNyArOTc5LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjoKICAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKQogewogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKQEAgLTk4Nyw3
ICs5ODcsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVldAogCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IHJlc3VsdCA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcjo6Y3JlYXRlKCkKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRTdHlsZVNoZWV0SWQoaWQoKSkKICAgICAgICAgLnNldE9yaWdp
bihtX29yaWdpbikKICAgICAgICAgLnNldERpc2FibGVkKHN0eWxlU2hlZXQtPmRpc2FibGVkKCkp
CkBAIC05OTgsMTAgKzk5OCwxMCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVldAogICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1
bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCkKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9y
c0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0
cmluZyYgc2hlZXRUZXh0KQogewogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uLCBjb21tZW50LCAoIi9cXCpbXl0qP1xcKi8iLCBU
ZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKSk7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHJlc3VsdCA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBjb25zdCBTZWxlY3RvclJhbmdl
TGlzdCYgcmFuZ2VzID0gc291cmNlRGF0YS0+c2VsZWN0b3JSYW5nZXM7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIHNpemUgPSByYW5nZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSA9IHJhbmdlcy5hdChpKTsKQEAgLTEwMTQsMTIgKzEw
MTQsMTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb24KICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3Qo
Q1NTU3R5bGVSdWxlKiBydWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rv
ckxpc3QoQ1NTU3R5bGVSdWxlKiBydWxlKQogewogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gc291cmNlRGF0YTsKICAgICBpZiAoZW5zdXJlUGFyc2VkRGF0YVJlYWR5KCkpCiAgICAgICAg
IHNvdXJjZURhdGEgPSBydWxlU291cmNlRGF0YUZvcihydWxlLT5zdHlsZSgpKTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnM7CiAK
ICAgICAvLyBUaGlzIGludGVudGlvbmFsbHkgZG9lcyBub3QgcmVseSBvbiB0aGUgc291cmNlIGRh
dGEgdG8gYXZvaWQgY2F0Y2hpbmcgdGhlIHRyYWlsaW5nIGNvbW1lbnRzIChiZWZvcmUgdGhlIGRl
Y2xhcmF0aW9uIHN0YXJ0aW5nICd7JykuCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4dCA9IHJ1bGUt
PnNlbGVjdG9yVGV4dCgpOwpAQCAtMTAyNywxMiArMTAyNywxMiBAQCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpidWlsZAogICAgIGlmIChzb3VyY2VEYXRhKQogICAgICAgICBzZWxlY3RvcnMgPSBzZWxlY3Rv
cnNGcm9tU291cmNlKHNvdXJjZURhdGEuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgp
KTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3JzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIHNlbGVjdG9ycyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBDU1NT
ZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnN0eWxlUnVsZSgpLT5zZWxlY3Rvckxp
c3QoKTsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rv
ckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0
KHNlbGVjdG9yKSkKICAgICAgICAgICAgIHNlbGVjdG9ycy0+YWRkSXRlbShzZWxlY3Rvci0+c2Vs
ZWN0b3JUZXh0KCkpOwogICAgIH0KLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3Rvckxpc3Q+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
U2VsZWN0b3JMaXN0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlNlbGVjdG9yTGlzdD4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxl
Y3Rvckxpc3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWxlY3RvcnMoc2VsZWN0b3JzKQogICAg
ICAgICAuc2V0VGV4dChzZWxlY3RvclRleHQpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xMDQx
LDI5ICsxMDQxLDI5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
ZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkCiAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5
bGVSdWxlKiBydWxlKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1
bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUq
IHJ1bGUpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBhZ2VTdHlsZVNoZWV0
KCk7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJlc3VsdCA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1J1bGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTZWxlY3Rvckxpc3Qo
YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QocnVsZSkpCiAgICAgICAgIC5zZXRTb3VyY2VMaW5l
KHJ1bGUtPnN0eWxlUnVsZSgpLT5zb3VyY2VMaW5lKCkpCiAgICAgICAgIC5zZXRPcmlnaW4obV9v
cmlnaW4pCiAgICAgICAgIC5zZXRTdHlsZShidWlsZE9iamVjdEZvclN0eWxlKHJ1bGUtPnN0eWxl
KCkpKTsKIAogICAgIC8vICJzb3VyY2VVUkwiIGlzIHByZXNlbnQgb25seSBmb3IgcmVndWxhciBy
dWxlcywgb3RoZXJ3aXNlICJvcmlnaW4iIHNob3VsZCBiZSB1c2VkIGluIHRoZSBmcm9udGVuZC4K
LSAgICBpZiAobV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNo
ZWV0T3JpZ2luOjpSZWd1bGFyKQorICAgIGlmIChtX29yaWdpbiA9PSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIpCiAgICAgICAgIHJlc3VsdC0+c2V0
U291cmNlVVJMKGZpbmFsVVJMKCkpOwogCiAgICAgaWYgKGNhbkJpbmQoKSkgewogICAgICAgICBJ
bnNwZWN0b3JDU1NJZCBpZChydWxlSWQocnVsZSkpOwogICAgICAgICBpZiAoIWlkLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0UnVsZUlkKGlkLmFzUHJvdG9jb2xWYWx1ZTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZD4oKSk7CisgICAgICAgICAgICByZXN1
bHQtPnNldFJ1bGVJZChpZC5hc1Byb3RvY29sVmFsdWU8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NSdWxlSWQ+KCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPj4gbWVkaWFBcnJheSA9IEFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYT4+IG1lZGlhQXJyYXkgPSBBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPjo6Y3JlYXRlKCk7CiAKICAgICBmaWxs
TWVkaWFMaXN0Q2hhaW4ocnVsZSwgbWVkaWFBcnJheS5nZXQoKSk7CiAgICAgaWYgKG1lZGlhQXJy
YXktPmxlbmd0aCgpKQpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2Jq
ZWMKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQorUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQogewogICAgIFJl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gc291cmNlRGF0YTsKICAgICBpZiAoZW5zdXJlUGFyc2Vk
RGF0YVJlYWR5KCkpCkBAIC0xMDgwLDEzICsxMDgwLDEzIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRP
YmplCiAKICAgICBJbnNwZWN0b3JDU1NJZCBpZCA9IHJ1bGVPclN0eWxlSWQoc3R5bGUpOwogICAg
IGlmIChpZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IGJvZ3VzU3R5bGUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldENzc1Byb3BlcnRpZXMoQXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpKQot
ICAgICAgICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKTsKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJvZ3VzU3R5bGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldENzc1By
b3BlcnRpZXMoQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNy
ZWF0ZSgpKQorICAgICAgICAgICAgLnNldFNob3J0aGFuZEVudHJpZXMoQXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0
dXJuIGJvZ3VzU3R5bGUucmVsZWFzZSgpOwogICAgIH0KICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5
bGU+IGluc3BlY3RvclN0eWxlID0gaW5zcGVjdG9yU3R5bGVGb3JJZChpZCk7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IGluc3BlY3Rv
clN0eWxlLT5idWlsZE9iamVjdEZvclN0eWxlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVj
dEZvclN0eWxlKCk7CiAKICAgICAvLyBTdHlsZSB0ZXh0IGNhbm5vdCBiZSByZXRyaWV2ZWQgd2l0
aG91dCBzdHlsZXNoZWV0LCBzbyBzZXQgY3NzVGV4dCBoZXJlLgogICAgIGlmIChzb3VyY2VEYXRh
KSB7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6Om9yaWdp
bmFsU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9y
U3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QK
IHsKLSAgICBpZiAobV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpVc2VyIHx8IG1fb3JpZ2luID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50KQorICAgIGlmIChtX29yaWdpbiA9PSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXIgfHwgbV9vcmln
aW4gPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdl
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9wYWdlU3R5bGVTaGVldCB8
fCAhb3duZXJEb2N1bWVudCgpIHx8ICFvd25lckRvY3VtZW50KCktPmZyYW1lKCkpCkBAIC0xMzk4
LDkgKzEzOTgsOSBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hlZXRU
ZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZT4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlz
dChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4+IEluc3BlY3RvclN0eWxl
U2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCiB7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1J1bGU+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0
KQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIApAQCAtMTQzMiwxMiArMTQzMiwx
MiBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUGFzc1JlZlB0
cjxDU1NSdWxlTGlzdD4gcnVsZUxpc3QsIENTUwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJp
bmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlz
dGVuZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9y
SW5saW5lU3R5bGUocGFnZUFnZW50LCBpZCwgZWxlbWVudCwgb3JpZ2luLCBsaXN0ZW5lcikpOwog
fQogCi1JbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3Ry
aW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBp
ZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBJbnNw
ZWN0b3JTdHlsZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIG51bGxwdHIsIG9yaWdpbiwgIiIsIGxpc3Rl
bmVyKQogICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX3J1bGVTb3VyY2VEYXRhKG51
bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aAppbmRleCAwY2E1YTUzYWVlNWMzODMzZmY5ODViOWIxMzU3OTQzMDk4NzIwNTZlLi40MTgzYjk0
MWZhMDA0NmYwYzViMGQyNzI3ZmVhOTZkYTQzZjFjZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclN0eWxlVGV4dEVkaXRvci5oIgotI2luY2x1ZGUgIkluc3BlY3Rv
cldlYlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlByb3RvY29sVHlwZXMu
aCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtODQsNyArODQsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQoKSBjb25zdCB7IHJldHVybiBt
X3N0eWxlU2hlZXRJZDsgfQogICAgIHVuc2lnbmVkIG9yZGluYWwoKSBjb25zdCB7IHJldHVybiBt
X29yZGluYWw7IH0KIAotICAgIC8vIElEIHR5cGUgaXMgZWl0aGVyIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGVJZCBvciBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGVJZC4KKyAgICAvLyBJRCB0eXBlIGlzIGVpdGhlciBJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlSWQgb3IgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlSWQuCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+CiAgICAgUGFzc1JlZlB0cjxJRD4gYXNQcm90b2NvbFZh
bHVlKCkgY29uc3QKICAgICB7CkBAIC0xMzksOCArMTM5LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkluc3BlY3RvclN0eWxlKCk7CiAKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBj
b25zdDsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRB
cnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRBcnJheUZvckNvbXB1dGVk
U3R5bGUoKSBjb25zdDsKICAgICBib29sIGhhc0Rpc2FibGVkUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuICFtX2Rpc2FibGVkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KICAgICBib29sIHNldFBy
b3BlcnR5VGV4dCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3
cml0ZSwgU3RyaW5nKiBvbGRUZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCB0b2dnbGVQ
cm9wZXJ0eSh1bnNpZ25lZCBpbmRleCwgYm9vbCBkaXNhYmxlLCBFeGNlcHRpb25Db2RlJik7CkBA
IC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGFwcGx5U3R5bGVUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCkgeyBFeGNlcHRpb25Db2RlIGVjID0gMDsgcmV0dXJuIHNldFRleHQodGV4
dCwgZWMpOyB9CiAKICAgICBib29sIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVj
dG9yU3R5bGVQcm9wZXJ0eT4qIHJlc3VsdCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBz
dHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNl
RGF0YT4gZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdDsKICAgICBTdHJpbmcgc2hvcnRoYW5kVmFs
dWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3Q7CiAgICAgU3RyaW5nIHNo
b3J0aGFuZFByaW9yaXR5KGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwpA
QCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PENTU1N0eWxlRGVjbGFyYXRpb24qLCBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+PiBJbnNwZWN0b3JT
dHlsZU1hcDsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVh
dGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NT
dHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+IGNyZWF0ZShJbnNwZWN0
b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+
IHBhZ2VTdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKik7CiAgICAgc3RhdGljIFN0
cmluZyBzdHlsZVNoZWV0VVJMKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0KTsKIAogICAg
IHZpcnR1YWwgfkluc3BlY3RvclN0eWxlU2hlZXQoKTsKQEAgLTE5NiwxMCArMTk2LDEwIEBAIHB1
YmxpYzoKICAgICBDU1NTdHlsZVJ1bGUqIGFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3Rvciwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgZGVsZXRlUnVsZShjb25zdCBJbnNwZWN0b3JDU1NJ
ZCYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGVGb3JJZChjb25zdCBJ
bnNwZWN0b3JDU1NJZCYpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KCk7
Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hl
ZXRIZWFkZXI+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKTsKLSAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxl
KENTU1N0eWxlUnVsZSopOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKik7
CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRC
b2R5PiBidWlsZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gYnVpbGRPYmplY3RGb3JTdHls
ZVNoZWV0SW5mbygpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxl
KENTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICBib29sIHNldFN0eWxlVGV4dChjb25zdCBJbnNw
ZWN0b3JDU1NJZCYsIGNvbnN0IFN0cmluZyYgdGV4dCwgU3RyaW5nKiBvbGRUZXh0LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQoY29uc3QgSW5zcGVjdG9yQ1NTSWQm
LCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3Zlcndy
aXRlLCBTdHJpbmcqIG9sZFByb3BlcnR5VGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wg
dG9nZ2xlUHJvcGVydHkoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCB1bnNpZ25lZCBwcm9wZXJ0eUlu
ZGV4LCBib29sIGRpc2FibGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTIxMiw5ICsyMTIsOSBAQCBw
dWJsaWM6CiAgICAgSW5zcGVjdG9yQ1NTSWQgc3R5bGVJZChDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSkgY29uc3QgeyByZXR1cm4gcnVsZU9yU3R5bGVJZChzdHlsZSk7IH0KIAogcHJvdGVjdGVk
OgotICAgIEluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3Ry
aW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRv
Y3VtZW50VVJMLCBMaXN0ZW5lciopOworICAgIEluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9y
UGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBw
YWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOwogCi0gICAgYm9vbCBjYW5C
aW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4gIT0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQgJiYgbV9vcmlnaW4gIT0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOyB9CisgICAgYm9vbCBj
YW5CaW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4gIT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQgJiYgbV9vcmlnaW4gIT0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOyB9CiAgICAgSW5zcGVjdG9y
Q1NTSWQgcnVsZU9yU3R5bGVJZChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Q7CiAg
ICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
UmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSkgY29uc3Q7CkBAIC0yNDIsMTMgKzI0MiwxMyBAQCBwcml2YXRlOgogICAg
IGJvb2wgb3JpZ2luYWxTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBi
b29sIGlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKLSAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOwot
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+
IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSopOworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NSdWxlPj4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNlbGVjdG9yTGlzdD4gYnVpbGRPYmplY3RG
b3JTZWxlY3Rvckxpc3QoQ1NTU3R5bGVSdWxlKik7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQq
IG1fcGFnZUFnZW50OwogICAgIFN0cmluZyBtX2lkOwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiBtX3BhZ2VTdHlsZVNoZWV0OwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbiBtX29yaWdpbjsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0
eWxlU2hlZXRPcmlnaW4gbV9vcmlnaW47CiAgICAgU3RyaW5nIG1fZG9jdW1lbnRVUkw7CiAgICAg
Ym9vbCBtX2lzUmV2YWxpZGF0aW5nOwogICAgIFBhcnNlZFN0eWxlU2hlZXQqIG1fcGFyc2VkU3R5
bGVTaGVldDsKQEAgLTI1OSwxNCArMjU5LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSA6IHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBQ
YXNzUmVmUHRyPEVsZW1lbnQ+LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hl
ZXRPcmlnaW4sIExpc3RlbmVyKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3Qg
U3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgdm9pZCBkaWRNb2RpZnlFbGVt
ZW50QXR0cmlidXRlKCk7CiAgICAgdmlydHVhbCBib29sIGdldFRleHQoU3RyaW5nKiByZXN1bHQp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVG
b3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUX1VO
VVNFRChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiBpbmxpbmVTdHlsZSgpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFn
ZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25z
dCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlN0eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CiAKICAgICB2aXJ0dWFsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NT
UnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGlu
ZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGFjZTU2M2Zl
NjI5MTNmY2FlZTAyM2JjNzUyZWQxMWY5NzYyZDI1MTQuLmJjNDk2ZDAzMWFhMTI3N2M0MTdlNzMx
ZjE3MDVkYmI4MGVlY2NmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTU1NCw5OSArNTU0LDk5IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJCiAgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbiwgaGl0Q291bnQpLCBUaW1lbGluZVJlY29yZFR5
cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGV4ZWMpKTsKIH0KIAot
c3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGUgdG9Qcm90
b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29s
OjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUp
CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkV2
ZW50RGlzcGF0Y2g6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpFdmVudERpc3BhdGNoOworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZlbnREaXNwYXRjaDsKICAgICBjYXNl
IFRpbWVsaW5lUmVjb3JkVHlwZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb246Ci0gICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpTY2hl
ZHVsZVN0eWxlUmVjYWxjdWxhdGlvbjsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uOwogICAg
IGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpSZWNhbGN1bGF0ZVN0eWxlczoKLSAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlY2FsY3Vs
YXRlU3R5bGVzOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6UmVjYWxjdWxhdGVTdHlsZXM7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5
cGU6OkludmFsaWRhdGVMYXlvdXQ6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpJbnZhbGlkYXRlTGF5b3V0OworICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6SW52YWxpZGF0ZUxh
eW91dDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6TGF5b3V0OgotICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6TGF5b3V0Owor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
TGF5b3V0OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpQYWludDoKLSAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhaW50Owor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
UGFpbnQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlNjcm9sbExheWVyOgotICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2Ny
b2xsTGF5ZXI7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpTY3JvbGxMYXllcjsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVz
aXplSW1hZ2U6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpSZXNpemVJbWFnZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc2l6ZUltYWdlOwogCiAgICAgY2FzZSBUaW1l
bGluZVJlY29yZFR5cGU6OlBhcnNlSFRNTDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhcnNlSFRNTDsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhcnNlSFRNTDsKIAog
ICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lckluc3RhbGw6Ci0gICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lckluc3Rh
bGw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpUaW1lckluc3RhbGw7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVyUmVt
b3ZlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6VGltZXJSZW1vdmU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lclJlbW92ZTsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6VGltZXJGaXJlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJGaXJlOworICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJGaXJlOwogCiAgICAgY2Fz
ZSBUaW1lbGluZVJlY29yZFR5cGU6OkV2YWx1YXRlU2NyaXB0OgotICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZhbHVhdGVTY3JpcHQ7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpFdmFsdWF0ZVNjcmlwdDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpNYXJrTG9h
ZDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6Ok1hcmtMb2FkOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6TWFya0xvYWQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6
Ok1hcmtET01Db250ZW50OgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6TWFya0RPTUNvbnRlbnQ7CisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrRE9NQ29udGVudDsKIAog
ICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lU3RhbXA6Ci0gICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lU3RhbXA7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpU
aW1lU3RhbXA7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWU6Ci0gICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
VGltZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6VGltZUVuZDoKLSAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVFbmQ7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpUaW1lRW5kOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0OgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpTY2hlZHVsZVJlc291cmNl
UmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VTZW5kUmVxdWVz
dDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlJlc291cmNlU2VuZFJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVNlbmRSZXF1ZXN0OwogICAgIGNh
c2UgVGltZWxpbmVSZWNvcmRUeXBlOjpSZXNvdXJjZVJlY2VpdmVSZXNwb25zZToKLSAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291
cmNlUmVjZWl2ZVJlc3BvbnNlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U7CiAgICAgY2FzZSBU
aW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNlUmVjZWl2ZWREYXRhOgotICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNl
aXZlZERhdGE7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6
RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVkRGF0YTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6UmVzb3VyY2VGaW5pc2g6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZUZpbmlzaDsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNlRmluaXNo
OwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlhIUlJlYWR5U3RhdGVDaGFuZ2U6Ci0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpYSFJSZWFkeVN0YXRlQ2hhbmdlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6WEhSUmVhZHlTdGF0ZUNoYW5nZTsKICAgICBjYXNlIFRp
bWVsaW5lUmVjb3JkVHlwZTo6WEhSTG9hZDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlhIUkxvYWQ7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpYSFJMb2FkOwogCiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkZ1bmN0aW9uQ2FsbDsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OkZ1bmN0aW9uQ2FsbDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGU6
Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpQcm9iZVNhbXBsZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OlByb2JlU2FtcGxlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRU
eXBlOjpDb25zb2xlUHJvZmlsZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNvbnNvbGVQcm9maWxlOworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6Q29uc29sZVByb2ZpbGU7
CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1lOgot
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1lOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVxdWVzdEFuaW1hdGlvbkZyYW1lOwogICAgIGNh
c2UgVGltZWxpbmVSZWNvcmRUeXBlOjpDYW5jZWxBbmltYXRpb25GcmFtZToKLSAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNhbmNlbEFu
aW1hdGlvbkZyYW1lOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU7CiAgICAgY2FzZSBUaW1lbGluZVJl
Y29yZFR5cGU6OkZpcmVBbmltYXRpb25GcmFtZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkZpcmVBbmltYXRpb25GcmFtZTsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkZp
cmVBbmltYXRpb25GcmFtZTsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2Nr
ZXRDcmVhdGU6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRDcmVhdGU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRDcmVhdGU7CiAgICAgY2Fz
ZSBUaW1lbGluZVJlY29yZFR5cGU6OldlYlNvY2tldFNlbmRIYW5kc2hha2VSZXF1ZXN0OgotICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
V2ViU29ja2V0U2VuZEhhbmRzaGFrZVJlcXVlc3Q7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtlUmVx
dWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0UmVjZWl2ZUhhbmRz
aGFrZVJlc3BvbnNlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2Vi
U29ja2V0UmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRU
eXBlOjpXZWJTb2NrZXREZXN0cm95OgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0RGVzdHJveTsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldERl
c3Ryb3k7CiAgICAgfQogCi0gICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OlRpbWVTdGFtcDsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOwogfQogCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHBycFJlY29yZCwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB7Ci0gICAgcHJwUmVjb3Jk
LT5zZXRTdHJpbmcoInR5cGUiLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRXZWJFbnVtQ29u
c3RhbnRWYWx1ZSh0b1Byb3RvY29sKHR5cGUpKSk7CisgICAgcHJwUmVjb3JkLT5zZXRTdHJpbmco
InR5cGUiLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRXZWJFbnVtQ29uc3RhbnRWYWx1ZSh0b1By
b3RvY29sKHR5cGUpKSk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29yZCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+OjpydW50aW1lQ2FzdChwcnBSZWNv
cmQpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVF
dmVudD4gcmVjb3JkID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGlu
ZTo6VGltZWxpbmVFdmVudD46OnJ1bnRpbWVDYXN0KHBycFJlY29yZCk7CiAKICAgICBpZiAobV9y
ZWNvcmRTdGFjay5pc0VtcHR5KCkpCiAgICAgICAgIHNlbmRFdmVudChyZWNvcmQucmVsZWFzZSgp
KTsKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlbmRF
dmVudChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIEZJWE1FOiBydW50aW1lQ2FzdCBpcyBhIGhhY2suIFdlIGRvIGl0IGJlY2F1c2Ug
d2UgY2FuJ3QgYnVpbGQgVGltZWxpbmVFdmVudCBkaXJlY3RseSBub3cuCi0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmRDaGVj
a2VkID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6VGlt
ZWxpbmVFdmVudD46OnJ1bnRpbWVDYXN0KGV2ZW50KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29yZENoZWNrZWQgPSBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50Pjo6cnVu
dGltZUNhc3QoZXZlbnQpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5ldmVudFJlY29yZGVk
KHJlY29yZENoZWNrZWQucmVsZWFzZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IGYwNWQ1ZGExNTJlMTI1NjFiMzk3Y2NkN2Yw
MTMxMzFjMzc1MmJmNzkuLmI5OWEwM2M2ZTA2ZmU5MzJhYzczNWIzNjAyNjVjYTI4NDA4Y2FiNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaD4KICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAKLXVzaW5nIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNjcmlwdGlvbjsK
K3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHREZXNj
cmlwdGlvbjsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236741</attachid>
            <date>2014-08-17 22:48:37 -0700</date>
            <delta_ts>2014-08-25 07:21:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136031-20140817224737.patch</filename>
            <type>text/plain</type>
            <size>513258</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODNmODRhZTNhYzVjZjg4YTAzNGUzZjY2ODI2MDkzMTA2YmE5MDVhLi45NzU4ZDM2OWE5YzhkMDQy
ZTA2YjI3ZDcxMzdiNDk2YzJkZTQ1NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjcgQEAKKzIwMTQtMDgtMTcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyIHRvIEluc3BlY3Rvcjo6UHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBUeXBlQnVpbGRlciBuYW1lc3BhY2UgdG8gUHJv
dG9jb2wuIERpc2FtYmlndWF0ZSB3aGVyZQorICAgICAgICBuZWNlc3NhcnkuIEFsc28gcmVuYW1l
IEluc3BlY3RvclR5cGVCdWlsZGVyIHRvIFByb3RvY29sVHlwZXMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6bWVzc2FnZVNv
dXJjZVZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6bWVzc2FnZVR5cGVWYWx1ZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Om1lc3NhZ2VMZXZlbFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJj
aFV0aWxpdGllczo6YnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnNlYXJjaEluVGV4dEJ5TGluZXMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3Jp
cHQ6OmV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmNhbGxG
dW5jdGlvbk9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldFBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJu
YWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBD
YWxsRnJhbWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmpl
Y3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRCYXNlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3Jp
cHRCYXNlOjptYWtlRXZhbENhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEJhc2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6U2NyaXB0Q2FsbEZyYW1lOjpidWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6
OmJ1aWxkSW5zcGVjdG9yQXJyYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2suaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpicmVh
a3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0
YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpjdXJyZW50Q2FsbEZyYW1lcyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpidWlsZEluc3BlY3Rvck9iamVjdCk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVj
dCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVBy
b2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRFcnJvclJhbmdlT2JqZWN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJp
YWJsZXNBdE9mZnNldHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2luaXRf
Xy5weToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6CisgICAgICAgIChCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5Ogor
ICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJh
dGVfYXN5bmNfZGlzcGF0Y2hlcl9jbGFzc19mb3JfZG9tYWluKToKKyAgICAgICAgKEJhY2tlbmRE
aXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb25fZm9yX2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk6CisgICAgICAgIChG
cm9udGVuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3Jf
ZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlw
ZV9idWlsZGVyX2hlYWRlci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5weTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weToKKyAg
ICAgICAgKEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZSk6CisgICAgICAg
IChHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGVfbWVtYmVyKToKKyAgICAg
ICAgKEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3JfdHlwZV93aXRoX25hbWUpOgorICAgICAgICAo
R2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9mb3JtYWxfb3V0X3BhcmFtZXRlcik6CisgICAgICAg
IChHZW5lcmF0b3IudHlwZV9zdHJpbmdfZm9yX2Zvcm1hbF9hc3luY19wYXJhbWV0ZXIpOgorICAg
ICAgICAoR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9zdGFja19pbl9wYXJhbWV0ZXIpOgorICAg
ICAgICAoR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKToKKyAg
ICAgICAgKEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlci5hc3NlcnRp
b25fbWV0aG9kX2Zvcl90eXBlKToKKyAgICAgICAgKEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9k
X2Zvcl90eXBlX21lbWJlcik6CisgICAgICAgIChHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmlu
Z19mb3JfdHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0
cmluZ19mb3JfdHlwZV9tZW1iZXIpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBsYXRlcy5weToKKyAgICAgICAgKEluc3BlY3Rvcik6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LWJpbmRpbmdzLnB5OgorICAgICAgICAoZ2VuZXJhdGVfZnJvbV9zcGVjaWZpY2F0aW9uKToKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFz
eW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25h
bC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlv
bmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUu
anNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpz
b24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRlbGl0eVR5cGVQcm9maWxlci5j
cHA6CisgICAgICAgIChKU0M6OkhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6Z2V0VHlwZXNGb3JW
YXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0hpZ2hGaWRl
bGl0eVR5cGVQcm9maWxlci5oOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5jcHA6CisgICAg
ICAgIChKU0M6OlR5cGVTZXQ6OmFsbFByaW1pdGl2ZVR5cGVOYW1lcyk6CisgICAgICAgIChKU0M6
OlR5cGVTZXQ6OmFsbFN0cnVjdHVyZVJlcHJlc2VudGF0aW9ucyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVNoYXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9UeXBlU2V0Lmg6CisKIDIwMTQtMDgtMTUgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hp
bmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJld3JpdGUgQ29kZUdlbmVyYXRv
ckluc3BlY3RvciB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY2N2Y5
ZjA0OTM5ZDUzZWIxY2UwNGM5MjdmYTA0MzNlNGExYjg3NzcuLjkyNjU1ZjUxN2EzOGRjYWJkZWY4
NzJhYmQxYjQyMGM1MDYyYWNhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjcgQEAKKzIwMTQt
MDgtMTcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyIHRvIEluc3BlY3Rv
cjo6UHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtZSBUeXBlQnVpbGRlciBuYW1lc3BhY2UgdG8gUHJvdG9jb2wuIERpc2FtYmlndWF0
ZSB3aGVyZQorICAgICAgICBuZWNlc3NhcnkuIEFsc28gcmVuYW1lIEluc3BlY3RvclR5cGVCdWls
ZGVyIHRvIFByb3RvY29sVHlwZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oOiBSZW1vdmVkLgorICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0SW1wbCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRB
cHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5
Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRT
dHlsZUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFs
bFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHls
ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFByb3BlcnR5
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29s
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0
b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpjb2xs
ZWN0U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnZp
YUluc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmRldGVjdE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZs
b3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6Z2V0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6cmVzb2x2ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omdl
dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojps
YXllcnNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXll
ckhpZXJhcmNoeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkT2JqZWN0Rm9yQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JDb29r
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1l
VHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZEluc3BlY3Rvck9iamVjdEZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNw
ZWN0b3JPYmplY3RGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9yU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9yU2VnbWVudFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZUlucHV0
VG9KU09ORnVuY3Rvcjo6U2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZUlucHV0VG9KU09ORnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnN3aXRjaFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omluc2VydFNlc3Npb25TZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpyZW1vdmVTZXNzaW9uU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y3VycmVudFJlcGxheVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpnZXRBdmFpbGFi
bGVTZXNzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0
U2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omdl
dFNlZ21lbnREYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RG
b3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZEluaXRpYXRvck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2Vi
U29ja2V0RnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRTb3VyY2VSYW5nZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpi
dWlsZE1lZGlhT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxNZWRpYUxpc3RDaGFpbik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVk
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0b3Jz
RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6
OmNhbkJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVjb3JkVG9UaW1lbGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZW5kRXZlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKwogMjAxNC0wOC0xNSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE2Nzg1Nik6IGFkb2JlLmNv
bSBubyBsb25nZXIgYWJsZSB0byBsYXVuY2ggQ3JlYXRlIENsb3VkIGFwcCB1c2luZyBhIFVSTCB3
aXRoIGEgY3VzdG9tIHNjaGVtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDgxNWEyMmIxZDJiMDE0NDk5ODJiYWNiMzc0Y2FjNzEzODVkYjAzMzcuLmY2MTdkYTVhMjY2ZTk4
NzEzODJlOTMwNWI4YjU4MzBkMWJjODhlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTkxNCw4ICs5MTQsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1BS
T1RPQ09MX1NDUklQVFMKICAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJ
Un0vY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkK
ICAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5l
cmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weQogICAgICR7SmF2YVNjcmlwdENvcmVf
SU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkKLSAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJ
UFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5Ci0gICAgJHtK
YXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfdHlw
ZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9JTlNQRUNU
T1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2Vu
ZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKICAgICAke0phdmFTY3JpcHRD
b3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0b3IucHkKICAgICAke0ph
dmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2Nv
ZGVnZW4vX19pbml0X18ucHkKQEAgLTk0NCwxMiArOTQ0LDEyIEBAIGFkZF9jdXN0b21fY29tbWFu
ZCgKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAgICAgICAgICAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU0Zyb250
ZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oCi0g
ICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9y
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcAotICAgICAgICAgICAke0RFUklWRURfU09VUkNF
U19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5o
CisgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5jcHAKKyAgICAgICAgICAgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5
cGVzLmgKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpzCiAgICAg
TUFJTl9ERVBFTkRFTkNZICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlMuanNvbgogICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfUFJP
VE9DT0xfU0NSSVBUU30KLSAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNj
cmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHkgLS1vdXRwdXREaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0iIC0tZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAmJiBta2RpciAtcCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3RvciAmJiBjcCAke0RFUklWRURfU09V
UkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmgg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmRE
aXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
Y3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIG1r
ZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX1dFQklOU1BFQ1RPUlVJX0RJUn0vVXNlckludGVyZmFj
ZS9Qcm90b2NvbCAmJiBjcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpzICR7REVSSVZFRF9TT1VSQ0VTX1dFQklOU1BFQ1RP
UlVJX0RJUn0vVXNlckludGVyZmFjZS9Qcm90b2NvbAorICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSAtLW91dHB1dERpciAiJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKUy5qc29uICYmIG1r
ZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYm
IGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTUHJv
dG9jb2xUeXBlcy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNQcm90b2NvbFR5cGVzLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9E
SVJ9L2luc3BlY3RvciAmJiBta2RpciAtcCAke0RFUklWRURfU09VUkNFU19XRUJJTlNQRUNUT1JV
SV9ESVJ9L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNfSkFW
QVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmRDb21tYW5kcy5qcyAke0RFUklWRURf
U09VUkNFU19XRUJJTlNQRUNUT1JVSV9ESVJ9L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wKICAgICBW
RVJCQVRJTSkKIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQ
VENPUkVfRElSfS9pbnNwZWN0b3IpCiAKQEAgLTk2NSwxNCArOTY1LDE0IEBAIGFkZF9jdXN0b21f
Y29tbWFuZCgKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU0JhY2tl
bmREaXNwYXRjaGVycy5jcHAKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9E
SVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCi0gICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuY3BwCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcAogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCiApCiAKIGxpc3QoQVBQ
RU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVj
dG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKLSAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNQ
cm90b2NvbFR5cGVzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0pTQ0J1aWx0aW5zLmgKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCBkMzNjOTUxOGZjMjkyODFjNDRiMDcyOGVhMTg0YTY2MWE4NGM5NjRkLi41YTVk
YWMzNjIyNDkwNmRhMTE4MjhmMTE2OGZlZjk1N2RhMGE2YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTI4LDggKzEyOCw4IEBAIElOU1BFQ1RPUl9H
RU5FUkFUT1JfU0NSSVBUUyA9IFwKIAkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBc
CiAJJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9m
cm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBcCiAJJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5IFwKLQkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHkgXAotCSQoSmF2YVNjcmlwdENvcmUpL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0
aW9uLnB5IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBcCisJJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weSBcCiAJJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5IFwKIAkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weSBcCiAJJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9tb2RlbHMucHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKaW5kZXggYzBkY2JkYzI5ZGMwOWJmMTcwYzZiZjVkNjRkYTU1ZTNkYzgxZDU5My4u
ZDRiZDRiMWQwMWExMGNjNGE2ZDFhMjcyYmE0Zjg0MTc1N2Q4NmRiOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC04MTcsNyArODE3LDcgQEAg77u/PD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHlhcnJcWWFyclN5bnRheENoZWNrZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJ
bnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJ
bnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3Jv
dXA+CiAgIDxJdGVtR3JvdXA+CkBAIC04MzEsNyArODMxLDcgQEAg77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbmplY3RlZFNjcmlwdFNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTR2xv
YmFsT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTT05PYmplY3QubHV0LmgiIC8+CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCDv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRW52aXJvbm1lbnQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXEluc3BlY3RvclByb3RvY29sVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxKU0luamVjdGVkU2NyaXB0SG9zdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
LmgiIC8+CkBAIC0xNjIwLDggKzE2MjAsOCBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNv
ZGVnZW5cZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IiAvPgog
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uLnB5IiAvPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3Jp
cHRzXGNvZGVnZW5cZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSIgLz4KLSAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRlX3R5cGVfYnVp
bGRlcl9pbXBsZW1lbnRhdGlvbi5weSIgLz4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSIgLz4K
KyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRl
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IiAvPgogICAgIDxOb25lIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdG9yLnB5IiAvPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdG9yX3RlbXBsYXRl
cy5weSIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2Vu
XG1vZGVscy5weSIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwppbmRleCBjZmFmMzc2NDBhMjMwMDVjMzBiZDhhZWU1NmI4OGRkYzcxZjNlNTg1
Li41MWI1ZGJkM2M0NTVhOWMxMDc1MTI3ZWE0ZjIwNTYxNGU3NGQ2NjJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xMzg5LDcgKzEz
ODksNyBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJv
bnRlbmREaXNwYXRjaGVycy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTUHJvdG9j
b2xUeXBlcy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNr
RmFpbFJldHVyblRodW5rcy5jcHAiPgpAQCAtMjE4MCw3ICsyMTgwLDcgQEAg77u/PD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCI+CiAgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclByb3RvY29sVHlwZXMuaCI+CiAgICAgICA8
RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIj4KQEAgLTI5MzQsNyAr
MjkzNCw3IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIj4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1Byb3RvY29s
VHlwZXMuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTR2xvYmFsT2JqZWN0Lmx1dC5oIj4KQEAgLTQwOTIsMTAgKzQwOTIsMTAgQEAg77u/PD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3Jcc2NyaXB0c1xjb2Rl
Z2VuPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rv
clxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSI+CisgICAg
PE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0ZV9wcm90
b2NvbF90eXBlc19oZWFkZXIucHkiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3Jcc2NyaXB0c1xj
b2RlZ2VuPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9u
LnB5Ij4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdl
bmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5Ij4KICAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlbjwvRmlsdGVyPgogICAgIDwvTm9uZT4KICAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRvci5weSI+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9j
b3B5LWZpbGVzLmNtZCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL2NvcHktZmlsZXMuY21kCmluZGV4IGViODRiYzE4ZmY0M2QyYzc4YjUyMjJhZWU0ZWJlZGE1
ZmIwYTdhMGUuLmJlNDc3YTQ0ODNiNmE5NTM0NTY0MTM2MjQzYzgyY2FkOTBhNzk2MGQgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHkt
ZmlsZXMuY21kCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL2NvcHktZmlsZXMuY21kCkBAIC03MSw3ICs3MSw3IEBAIGZvciAlJWQgaW4gKAogDQogZWNo
byBDb3B5aW5nIEluc3BlY3RvciBnZW5lcmF0ZWQgZmlsZXMgYXMgaWYgdGhleSB3ZXJlIHByaXZh
dGUgaGVhZGVycy4uLg0KIHhjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3Bl
Y3RvckpTLmpzb24iICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQoteGNvcHkgL3kg
IiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCIgIiVQ
cml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwNCit4Y29weSAveSAiJURlcml2ZWRTb3VyY2Vz
RGlyZWN0b3J5JVxJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaCIgIiVQcml2YXRlSGVhZGVyc0Rp
cmVjdG9yeSUiID5OVUwNCiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIg
Pk5VTA0KIHhjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3RvckpTRnJv
bnRlbmREaXNwYXRjaGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KIHhj
b3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3RvckpTQmFja2VuZENvbW1h
bmRzLmpzIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KQEAgLTg4LDcgKzg4LDcg
QEAgeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSlNSZXBsYXlJbnB1dHMuaCIg
IiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUKIA0KIGVjaG8gQ29weWluZyBidWlsdGlucyBoZWFk
ZXIgYXMgaWYgaXQgd2VyZSBhIHByaXZhdGUgaGVhZGVyLi4uDQogeGNvcHkgL3kgIiVEZXJpdmVk
U291cmNlc0RpcmVjdG9yeSVcSlNDQnVpbHRpbnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9y
eSUiID5OVUwNCi14Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxCeXRlY29kZXMu
aCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKK3hjb3B5IC95ICIlRGVyaXZlZFNv
dXJjZXNEaXJlY3RvcnklXEJ5dGVjb2Rlcy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIg
Pk5VTA0KIA0KIGVjaG8gQ29weWluZyByZXNvdXJjZXMuLi4NCiBta2RpciAiJVJlc291cmNlc0Rp
cmVjdG9yeSUiIDI+TlVMDQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZjRjMGI4
Y2YwMjEzYTIyNTQyYTA2ZmJkNDE0YTBjZGU4OGQ0NWQ0Li4wZTNmNGI3OGQ4YmRjZjYyNGE5YjE1
ZGRhOGJjNmZjMWMyMmM0YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTYz
NCw4ICsxNjM0LDggQEAKIAkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpT
QmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTMyNDM4MjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5k
RGlzcGF0Y2hlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBNTMyNDM4OTE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MzI0MzgzMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwICovOyB9OwogCQlBNTMyNDM4QTE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9y
SlNGcm9udGVuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTMyNDM4NDE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9u
dGVuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTVHlwZUJ1
aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAg
Ki87IH07Ci0JCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUz
MjQzODYxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTUzMjQzOEIxODU2
ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4NTE4NTY4MzE3MDAyRUQ2
OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcCAqLzsgfTsKKwkJQTUzMjQzOEMxODU2
ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzODYxODU2ODMxNzAwMkVENjky
IC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MzI0Mzk0MTg1Njk3MDkwMDJFRDY5MiAvKiBnZW5l
cmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0MzkxMTg1Njk2RTYwMDJFRDY5MiAvKiBnZW5lcmF0
ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVj
dG9ySlMuanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MzI0Mzk1MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1M0NFMDg1MThCQzFBNTYw
MEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1M0NFMDgxMThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xl
UHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTE2NTQsNyArMTY1NCw3IEBACiAJCUE1NEU4RUIxMThC
RkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkEzNDNGNzcxOEExNzQ5RDAwMzlCMDg1
IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU1RDkzQTUxODUwMTJBODAwNDAwREVEIC8qIFNjcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cCAqLzsgfTsKIAkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkz
QTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1NUQ5M0FDMTg1MTRGNzkwMDQw
MERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlw
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NUQ5
M0FCMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU3RDIzRTUxODkwQ0VC
RjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTMxODkwQ0VCRjAwMzFDN0ZBIC8q
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9OwogCQlBNTdEMjNFNjE4OTBDRUJGMDAz
MUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTQxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBNTdEMjNFOTE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQuY3BwICovOyB9OwpAQCAtMjA2Nyw4ICsyMDY3LDggQEAKIAkJQzQ3MDNDRDAxOTI4NDRD
QzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0M1
MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzQ3MDNDRDExOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzQ3MDNDQzYxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUM0NzAzQ0QyMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9mcm9udGVuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzQ3MDNDQzcxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250
ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzQ3MDNDRDMxOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDODE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVf
dHlwZV9idWlsZGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlDNDcwM0NENDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfdHlw
ZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQzkxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX3R5
cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDNDcwM0NEMzE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJh
dGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQzgxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX3By
b3RvY29sX3R5cGVzX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlDNDcwM0NENDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfcHJv
dG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDOTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVf
cHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzQ3MDNDRDUxOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRvcl90ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNDcwM0NDQTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRl
cy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
NDcwM0NENjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQ0IxOTI4NDRDQzAwMTNGQkVBIC8q
IGdlbmVyYXRvci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDNDcwM0NENzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQ0MxOTI4NDRDQzAwMTNG
QkVBIC8qIG1vZGVscy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMzMyMCw4ICszMzIwLDggQEAKIAkJQTUzMjQzODIxODU2ODMxNzAwMkVENjky
IC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1MzI0MzgzMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hl
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUzMjQzODQxODU2ODMxNzAwMkVE
NjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTUzMjQzODUxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTVHlwZUJ1aWxkZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUzMjQzODYxODU2ODMxNzAwMkVENjkyIC8qIElu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckpTVHlwZUJ1
aWxkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MzI0Mzg1MTg1NjgzMTcw
MDJFRDY5MiAvKiBJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTUzMjQzODYxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUzMjQzOEQxODU2OTZDQTAwMkVENjkyIC8qIHByb3RvY29s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVy
OyBwYXRoID0gcHJvdG9jb2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MzI0Mzkx
MTg1Njk2RTYwMDJFRDY5MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1jb21iaW5lZC1p
bnNwZWN0b3ItanNvbi5weSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MzI0Mzk1
MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29u
OyBwYXRoID0gSW5zcGVjdG9ySlMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMzNDAsNyArMzM0MCw3IEBACiAJCUE1NENGMkY4MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NUQ5M0EzMTg1MDEyQTgwMDQwMERFRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NUQ5M0FC
MTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclByb3RvY29sVHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3RDIzRTMxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1N0QyM0U0MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3RDIzRTcxODkxQjA3NzAwMzFDN0ZBIC8q
IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzc0NSw4ICszNzQ1LDggQEAKIAkJQzQ3MDNDQzUxOTI4NDRD
QzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5w
eSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGdlbmVyYXRlX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weTsgcGF0aCA9IGdlbmVyYXRlX2JhY2tlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzQ3MDNDQzYxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJf
aGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gZ2VuZXJhdGVf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk7IHBhdGggPSBnZW5lcmF0ZV9mcm9udGVuZF9k
aXNwYXRjaGVyX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzQ3MDND
QzcxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBnZW5lcmF0
ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OyBwYXRoID0gZ2VuZXJhdGVf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzQ3MDNDQzgxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX3R5cGVfYnVp
bGRlcl9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBnZW5l
cmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5OyBwYXRoID0gZ2VuZXJhdGVfdHlwZV9idWlsZGVy
X2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzQ3MDNDQzkxOTI4NDRD
QzAwMTNGQkVBIC8qIGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5weSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9p
bXBsZW1lbnRhdGlvbi5weTsgcGF0aCA9IGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRh
dGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzQ3MDNDQzgxOTI4NDRDQzAw
MTNGQkVBIC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5w
eTsgcGF0aCA9IGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzQ3MDNDQzkxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX3By
b3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBuYW1lID0gZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHk7IHBh
dGggPSBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzQ3MDNDQ0ExOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRv
cl90ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBnZW5l
cmF0b3JfdGVtcGxhdGVzLnB5OyBwYXRoID0gZ2VuZXJhdG9yX3RlbXBsYXRlcy5weTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzQ3MDNDQ0IxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVy
YXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGdlbmVyYXRvci5w
eTsgcGF0aCA9IGdlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzQ3
MDNDQ0MxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnB5dGhvbjsgbmFtZSA9IG1vZGVscy5weTsgcGF0aCA9IG1vZGVscy5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MzUsOCArNDUzNSw4IEBACiAJCQkJQTUzMjQzODIxODU2ODMx
NzAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCiAJCQkJQTUz
MjQzODMxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgKi8sCiAJCQkJQTUzMjQzODQxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRl
bmREaXNwYXRjaGVycy5oICovLAotCQkJCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgKi8sCi0JCQkJQTUzMjQzODYxODU2ODMxNzAwMkVENjky
IC8qIEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggKi8sCisJCQkJQTUzMjQzODUxODU2ODMxNzAw
MkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5jcHAgKi8sCisJCQkJQTUzMjQzODYx
ODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oICovLAogCQkJCUE3
RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdEODAx
QTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCkBAIC01NjU3LDcgKzU2NTcsNyBA
QAogCQkJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oICovLAogCQkJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0b3JFbnZp
cm9ubWVudC5oICovLAogCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCAqLywKLQkJCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCAqLywKKwkJCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyog
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oICovLAogCQkJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAogCQkJCUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCkBAIC01NzMwLDggKzU3MzAsOCBAQAogCQkJ
CUM0NzAzQ0M1MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkgKi8sCiAJCQkJQzQ3MDNDQzYxOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovLAogCQkJCUM0NzAzQ0M3MTky
ODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5ICovLAotCQkJCUM0NzAzQ0M4MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV90eXBl
X2J1aWxkZXJfaGVhZGVyLnB5ICovLAotCQkJCUM0NzAzQ0M5MTkyODQ0Q0MwMDEzRkJFQSAvKiBn
ZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJQzQ3MDNDQzgx
OTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSAqLywK
KwkJCQlDNDcwM0NDOTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNf
aW1wbGVtZW50YXRpb24ucHkgKi8sCiAJCQkJQzQ3MDNDQ0ExOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRvcl90ZW1wbGF0ZXMucHkgKi8sCiAJCQkJQzQ3MDNDQ0IxOTI4NDRDQzAwMTNGQkVBIC8q
IGdlbmVyYXRvci5weSAqLywKIAkJCQlDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxz
LnB5ICovLApAQCAtNjAzMCw3ICs2MDMwLDcgQEAKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZD
QjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0Mzk0MTg1Njk3MDkw
MDJFRDY5MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODQwRTI3MTg3Qzk4MUUwMDg0M0IxMCAvKiBjc3NtaW4ucHkgaW4gSGVhZGVy
cyAqLywKLQkJCQlDNDcwM0NEMzE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfdHlwZV9idWls
ZGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAorCQkJCUM0NzAzQ0QzMTkyODQ0Q0MwMDEzRkJF
QSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJ
CQlDNDcwM0NEMjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hl
cl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0QxMTkyODQ0Q0Mw
MDEzRkJFQSAvKiBnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFk
ZXJzICovLAogCQkJCUM0NzAzQ0Q1MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxh
dGVzLnB5IGluIEhlYWRlcnMgKi8sCkBAIC02MDM5LDcgKzYwMzksNyBAQAogCQkJCUM0NzAzQ0Mw
MTkyODQ0OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3Mu
cHkgaW4gSGVhZGVycyAqLywKIAkJCQlDNDcwM0NEMDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJh
dGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzQ3MDNDQ0UxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRfY29tbWFuZHMu
cHkgaW4gSGVhZGVycyAqLywKLQkJCQlDNDcwM0NENDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJh
dGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQzQ3
MDNDRDQxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVu
dGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNGQkVBIC8q
IG1vZGVscy5weSBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODM2Mzg2MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKQEAg
LTY0MjMsMTAgKzY0MjMsMTAgQEAKIAkJCQlBNTMyNDM4QTE4NTY4MzM1MDAyRUQ2OTIgLyogSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJENERF
RTE5ODMyREM0MDA3RDRCMTkgLyogSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjA2RERFQTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMu
aCBpbiBIZWFkZXJzICovLAotCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0
b3JKU1R5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOEMxODU2ODMzNTAw
MkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCRkREMDUxOTZDOTJCRjAwN0E1QkZBIC8qIERGR1BoYW50b21SZW1v
dmFsUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAv
KiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU1RDkzQUMxODUx
NEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGM0IxN0FEQjVGMzAwNUFCMTc0IC8qIEludDE2QXJyYXku
aCBpbiBIZWFkZXJzICovLApAQCAtNzk2NSw3ICs3OTY1LDcgQEAKIAkJCQlBNTdEMjNFNTE4OTBD
RUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTMyNDM4NzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0
Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzODkxODU2ODMzNTAwMkVENjkyIC8q
IEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlB
NTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpT
UHJvdG9jb2xUeXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTBFNEI2MTE4ODA5REQ1MDA2
OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTc4ODUzRjkxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hh
aW4uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDAyMDNiYzFhOWY3MzZiNDhmYzIxZWMxMWM4
ZTNiNDk1MDlkMTA5NTkuLjRiOGUzYzU2OWYzMjZjMmE4N2E1ODFhMDlmYzNlNjFjNzM5ODExZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCkBAIC0xMzEsNTcgKzEzMSw1NyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphdXRvZ2Vu
ZXJhdGVNZXRhZGF0YShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgfQogfQogCi1zdGF0aWMg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZSBt
ZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJjZSBzb3VyY2UpCitzdGF0aWMgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZSBtZXNzYWdlU291cmNl
VmFsdWUoTWVzc2FnZVNvdXJjZSBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAg
ICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlhNTDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlhNTDsKLSAgICBjYXNlIE1lc3NhZ2VT
b3VyY2U6OkpTOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlNvdXJjZTo6SmF2YXNjcmlwdDsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6Ok5l
dHdvcms6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6U291cmNlOjpOZXR3b3JrOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQ
STogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpTb3VyY2U6OkNvbnNvbGVBUEk7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpTdG9yYWdlOiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6U3RvcmFnZTsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlOiByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6
QXBwY2FjaGU7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpSZW5kZXJpbmc6IHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpSZW5k
ZXJpbmc7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpDU1M6IHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpDU1M7Ci0gICAgY2Fz
ZSBNZXNzYWdlU291cmNlOjpTZWN1cml0eTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlNlY3VyaXR5OwotICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6T3RoZXI6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpPdGhlcjsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6
OlhNTDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpTb3VyY2U6OlhNTDsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OkpTOiByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6SmF2YXNjcmlw
dDsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcms6IHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpOZXR3b3JrOworICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNvbnNvbGVBUEk7CisgICAgY2FzZSBN
ZXNzYWdlU291cmNlOjpTdG9yYWdlOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6U3RvcmFnZTsKKyAgICBjYXNlIE1lc3NhZ2VTb3Vy
Y2U6OkFwcENhY2hlOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlNvdXJjZTo6QXBwY2FjaGU7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpSZW5k
ZXJpbmc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6U291cmNlOjpSZW5kZXJpbmc7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpDU1M6IHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpD
U1M7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpTZWN1cml0eTogcmV0dXJuIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlNlY3VyaXR5OworICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6T3RoZXI6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpPdGhlcjsKICAgICB9Ci0gICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6
Ok90aGVyOworICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6U291cmNlOjpPdGhlcjsKIH0KIAotc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlIG1lc3NhZ2VUeXBlVmFsdWUoTWVzc2Fn
ZVR5cGUgdHlwZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6VHlwZSBtZXNzYWdlVHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6TG9nOiByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkxvZzsKLSAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpDbGVhcjogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpDbGVhcjsKLSAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpEaXI6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6VHlwZTo6RGlyOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpclhNTDogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpE
aXJYTUw7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6VGFibGU6IHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGFibGU7Ci0gICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6VHJhY2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VHJhY2U7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6
U3RhcnRHcm91cDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0
R3JvdXBDb2xsYXBzZWQ6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDsKLSAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpFbmRHcm91cDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpFbmRHcm91cDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpB
c3NlcnQ6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6QXNzZXJ0OwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRpbWluZzogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpU
aW1pbmc7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6UHJvZmlsZTogcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlOwotICAg
IGNhc2UgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQ6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6UHJvZmlsZUVuZDsKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpMb2c6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOiBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OkNsZWFyOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpcjogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXI7CisgICAgY2FzZSBNZXNz
YWdlVHlwZTo6RGlyWE1MOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlR5cGU6OkRpclhNTDsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUYWJsZTog
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBl
OjpUYWJsZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUcmFjZTogcmV0dXJuIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpUcmFjZTsKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOworICAgIGNh
c2UgTWVzc2FnZVR5cGU6OkVuZEdyb3VwOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdyb3VwOworICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkFzc2VydDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpUeXBlOjpBc3NlcnQ7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6VGltaW5nOiByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRp
bWluZzsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlOiByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZDogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpQcm9maWxlRW5kOwogICAgIH0KLSAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OkxvZzsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlR5cGU6OkxvZzsKIH0KIAotc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbCBtZXNzYWdlTGV2ZWxWYWx1ZShNZXNzYWdlTGV2
ZWwgbGV2ZWwpCitzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKIHsKICAg
ICBzd2l0Y2ggKGxldmVsKSB7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkxvZzogcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9n
OwotICAgIGNhc2UgTWVzc2FnZUxldmVsOjpXYXJuaW5nOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpXYXJuaW5nOwotICAgIGNh
c2UgTWVzc2FnZUxldmVsOjpFcnJvcjogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RXJyb3I7Ci0gICAgY2FzZSBNZXNzYWdlTGV2
ZWw6OkRlYnVnOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OkxldmVsOjpEZWJ1ZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6TG9nOiByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpM
b2c7CisgICAgY2FzZSBNZXNzYWdlTGV2ZWw6Oldhcm5pbmc6IHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Oldhcm5pbmc7CisgICAgY2Fz
ZSBNZXNzYWdlTGV2ZWw6OkVycm9yOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpFcnJvcjsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6
RGVidWc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2Fn
ZTo6TGV2ZWw6OkRlYnVnOwogICAgIH0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CisgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6TG9nOwogfQog
CiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9u
dGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGJvb2wgZ2VuZXJhdGVQ
cmV2aWV3KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZT4ganNvbk9iaiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZT4ganNvbk9iaiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpjcmVhdGUoKQogICAgICAgICAuc2V0U291cmNlKG1l
c3NhZ2VTb3VyY2VWYWx1ZShtX3NvdXJjZSkpCiAgICAgICAgIC5zZXRMZXZlbChtZXNzYWdlTGV2
ZWxWYWx1ZShtX2xldmVsKSkKICAgICAgICAgLnNldFRleHQobV9tZXNzYWdlKTsKQEAgLTE5OSwx
MSArMTk5LDExIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9y
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgaWYgKG1fYXJndW1lbnRz
ICYmIG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0
Rm9yKG1fYXJndW1lbnRzLT5nbG9iYWxTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+PiBqc29uQXJncyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OmNyZWF0ZSgpOworICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IGpzb25BcmdzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBpZiAobV90eXBlID09IE1lc3NhZ2VUeXBlOjpUYWJsZSAmJiBnZW5l
cmF0ZVByZXZpZXcgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICAg
ICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHRhYmxlID0gbV9hcmd1bWVudHMtPmFyZ3Vt
ZW50QXQoMCk7CiAgICAgICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY29sdW1u
cyA9IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxID8gbV9hcmd1bWVudHMtPmFyZ3Vt
ZW50QXQoMSkgOiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwotICAgICAgICAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3Bl
Y3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcFRhYmxlKHRhYmxlLCBjb2x1bW5zKTsKKyAg
ICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBUYWJsZSh0YWJsZSwg
Y29sdW1ucyk7CiAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAg
ICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFsdWUpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9h
cmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3Bl
Y3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1l
bnRBdChpKSwgImNvbnNvbGUiLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNw
ZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3Vt
ZW50QXQoaSksICJjb25zb2xlIiwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmNwcAppbmRleCBiY2Q2OTFiYjFlMzZiYmY2MmUyNjFjMTk5Y2I4ODRhOTNjZjUzNDZl
Li5lZjU0ZjA2YzMxY2E2MDFhYjVjYzM0Y2Q2MTFkYmU2ODc5OTQzOTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxp
dGllcy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpT
UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
IlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiWWFyci5oIgpAQCAtMTIxLDkgKzEyMSw5
IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3Ry
aW5nJiB0ZXh0KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2Jq
ZWN0Rm9yU2VhcmNoTWF0Y2goc2l6ZV90IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNv
bnRlbnQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlw
ZXM6OlNlYXJjaE1hdGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKHNpemVfdCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIGxpbmVDb250ZW50KQogewotICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoOjpjcmVhdGUoKQorICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoOjpjcmVh
dGUoKQogICAgICAgICAuc2V0TGluZU51bWJlcihsaW5lTnVtYmVyKQogICAgICAgICAuc2V0TGlu
ZUNvbnRlbnQobGluZUNvbnRlbnQpCiAgICAgICAgIC5yZWxlYXNlKCk7CkBAIC0xNTQsOSArMTU0
LDkgQEAgaW50IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKGNvbnN0IEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24mIHJlZ2V4LCBjb24KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Q
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+
PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBx
dWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpCiB7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiByZXN1
bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5l
cmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CiAKICAgICBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uIHJlZ2V4ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6Y3JlYXRlU2VhcmNo
UmVnZXgocXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogICAgIFZlY3RvcjxzdGQ6OnBh
aXI8c2l6ZV90LCBTdHJpbmc+PiBtYXRjaGVzID0gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVz
QnlMaW5lcyhyZWdleCwgdGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCmluZGV4IDJiYzJkM2M3YzBkZDJk
ZTJmMWMyMmEzYzJkYjZmYTExYTZiMzIyZjAuLmQ2MTJkYWIxZjJhODcwOTA5NTVjYjkxOGRmMmJk
NTA5ZTU2ZmNkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCkBAIC0zMSw3ICszMSw3IEBACiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzIHsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNDOjpZYXJyOjpSZWd1bGFyRXhw
cmVzc2lvbiBjcmVhdGVTZWFyY2hSZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNhc2VT
ZW5zaXRpdmUsIGJvb2wgaXNSZWdleCk7CiBKU19FWFBPUlRfUFJJVkFURSBpbnQgY291bnRSZWd1
bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYs
IGNvbnN0IFN0cmluZyYpOwotSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6
OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBp
c1JlZ2V4KTsKK0pTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+
IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CiBKU19F
WFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChzaXplX3Qg
b2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwogSlNfRVhQT1JUX1BS
SVZBVEUgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBT
dHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0LmNwcAppbmRleCBlNWEyNjIyZGRlYjE0NTJmZTkyYmNhNDZhODA0NTliOTliYWQ0
MDhhLi4yNTE4N2ZiNGFiZTk0MGUwNDFlNzJiOGVmMmE4MTNlOGI2N2Q5YThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAt
NDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTsK
K3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OwogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIApAQCAtNTgsNyArNTgsNyBAQCBJbmplY3RlZFNjcmlwdDo6fkluamVjdGVkU2NyaXB0KCkK
IHsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZh
bHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZXZhbHVh
dGUiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKQEAgLTY5LDcgKzY5LDcgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24KICAgICBtYWtlRXZhbENhbGwoZXJyb3JTdHJpbmcsIGZ1
bmN0aW9uLCByZXN1bHQsIHdhc1Rocm93bik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNh
bGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywg
Ym9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluamVjdGVk
U2NyaXB0OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCBBU0NJSUxpdGVyYWwoImNhbGxGdW5jdGlvbk9uIiksIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVu
Y3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZQogICAg
IG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsK
IH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVz
LCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29s
IHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJh
bWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3Vw
LCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3
YXNUaHJvd24pCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZXZhbHVhdGVPbkNhbGxGcmFt
ZSIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZXMpOwpAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgRGVwcmVjYQogICAgIG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVu
Y3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0
aW9uRGV0YWlscz4qIHJlc3VsdCkKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0
YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiBy
ZXN1bHQpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0RnVuY3Rpb25EZXRhaWxzIiks
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqcmVz
dWx0ID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVu
Y3Rpb25EZXRhaWxzPjo6cnVudGltZUNhc3QocmVzdWx0VmFsdWUpOworICAgICpyZXN1bHQgPSBC
aW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFp
bHM+OjpydW50aW1lQ2FzdChyZXN1bHRWYWx1ZSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKK3ZvaWQg
SW5qZWN0ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJlZlB0cjxBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVy
dGllcykKIHsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJnZXRQcm9wZXJ0aWVzIiksIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTIyLDEwICsxMjIsMTAgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgb2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICpwcm9wZXJ0aWVz
ID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQ
cm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QocmVzdWx0KTsKKyAgICAqcHJvcGVydGll
cyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KHJlc3VsdCk7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQor
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPEFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHByb3Bl
cnRpZXMpCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVz
IiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwpAQCAtMTM3LDEyICsxMzcsMTIgQEAg
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gYXJyYXkgPSBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KHJlc3VsdCk7
CisgICAgYXV0byBhcnJheSA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QocmVz
dWx0KTsKICAgICBpZiAoYXJyYXktPmxlbmd0aCgpID4gMCkKICAgICAgICAgKnByb3BlcnRpZXMg
PSBhcnJheTsKIH0KIAotUGFzc1JlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKQorUGFzc1JlZlB0cjxBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6
OndyYXBDYWxsRnJhbWVzKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVz
KQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFs
KCJ3cmFwQ2FsbEZyYW1lcyIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOwpAQCAtMTUzLDEyICsxNTMsMTIgQEAgUGFzc1JlZlB0cjxBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0ZWRTY3JpcHQ6OncK
ICAgICBBU1NFUlQoIWhhZEV4Y2VwdGlvbik7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBy
ZXN1bHQgPSBjYWxsRnJhbWVzVmFsdWUudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKTsK
ICAgICBpZiAocmVzdWx0LT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGU6OkFycmF5KQot
ICAgICAgICByZXR1cm4gQmluZGluZ1RyYWl0czxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj46OnJ1bnRpbWVDYXN0KHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+Pjo6cnVudGltZUNhc3QocmVzdWx0KTsKIAotICAgIHJldHVybiBBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAg
cmV0dXJuIEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+Ojpj
cmVhdGUoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3KSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wg
Z2VuZXJhdGVQcmV2aWV3KSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgid3JhcE9iamVjdCIpLCBpbnNwZWN0b3JFbnZpcm9u
bWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMTczLDEwICsxNzMsMTAgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IElu
amVjdGVkU2NyaXB0Ojp3cmFwT2IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0
U3RhdGUoKSktPmFzT2JqZWN0KCk7Ci0gICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmF3UmVz
dWx0KTsKKyAgICByZXR1cm4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0
ZWRTY3JpcHQ6OndyYXBUYWJsZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdAorUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2Ny
aXB0Ojp3cmFwVGFibGUoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHRhYmxlLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY29sdW1ucykgY29uc3QKIHsKICAgICBBU1NFUlQo
IWhhc05vVmFsdWUoKSk7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBG
dW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoIndyYXBUYWJsZSIp
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwpAQCAtMTkz
LDcgKzE5Myw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmF3UmVzdWx0ID0gci50b0luc3Bl
Y3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpLT5hc09iamVjdCgpOwotICAgIHJldHVybiBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1
bnRpbWVDYXN0KHJhd1Jlc3VsdCk7CisgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmF3UmVzdWx0
KTsKIH0KIAogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHQ6OmZpbmRPYmpl
Y3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKaW5kZXggNGM1OGIxOWU1MWY3Zjcx
MDliZGYyYWQ3NDAwYjBmOWY3YjI3YWI2ZS4uNmU4Zjc2OWUwMTYzYTMyNmNmNjIyMmI0MGUxMDM2
ZDBlNDM2OWIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaApAQCAtMzUsNyArMzUsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
ICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEJhc2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JKU1R5
cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU2LDE2ICs1NiwxNiBAQCBwdWJsaWM6CiAgICAg
SW5qZWN0ZWRTY3JpcHQoRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0LCBJbnNwZWN0b3JFbnZpcm9u
bWVudCopOwogICAgIHZpcnR1YWwgfkluamVjdGVkU2NyaXB0KCk7CiAKLSAgICB2b2lkIGV2YWx1
YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgYm9vbCByZXR1cm5CeVZh
bHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Ro
cm93bik7Ci0gICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBhcmd1
bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFt
ZShFcnJvclN0cmluZyosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVz
LCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29s
IHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKTsKLSAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKLSAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+KiByZXN1bHQpOwotICAgIHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVz
dWx0KTsKKyAgICB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwLCBib29sIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFBy
b3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFByb3RvY29sOjpPcHRPdXRw
dXQ8Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBQ
cm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgIHZvaWQgZXZhbHVhdGVP
bkNhbGxGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBj
YWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgUHJvdG9jb2w6Ok9wdE91dHB1
dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRpZXMsIFJl
ZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2Nv
bDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcmVzdWx0KTsKIAotICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4gd3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsK
LSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBP
YmplY3QoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcgPSBmYWxzZSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwVGFibGUoY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIHRhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgY29sdW1ucykgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYpOworICAgIFBhc3NSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4gd3JhcE9iamVjdChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHdyYXBUYWJs
ZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdDsKIAogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGZpbmRPYmplY3RCeUlkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpIGNvbnN0OwogICAgIHZv
aWQgaW5zcGVjdE9iamVjdChEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKaW5k
ZXggZmUxMGQ2YzRiZmJhZmJmMjg2Y2MzYThkMzVjOWM1OGRkNTQyNGMxYi4uODU2OWE0Yjc4MTI3
NjY2MmZhMGQwY2VkOTFkZWUxZDI4NTdhMGZiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2FsbChEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQCiAgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0
b3JTdHJpbmc6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNhbGwuIik7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIG9iamVjdFJlc3VsdCwgVHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdEJh
c2U6Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0Piogb2JqZWN0UmVzdWx0LCBQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiByZXN1bHQ7CiAgICAgbWFrZUNh
bGwoZnVuY3Rpb24sICZyZXN1bHQpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSW5qZWN0ZWRT
Y3JpcHRCYXNlOjptYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBEZXByZWNh
dGVkOjpTY3JpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqb2JqZWN0UmVzdWx0ID0g
QmluZGluZ1RyYWl0czxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGlt
ZUNhc3QocmVzdWx0T2JqKTsKKyAgICAqb2JqZWN0UmVzdWx0ID0gQmluZGluZ1RyYWl0czxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmVzdWx0T2JqKTsKICAg
ICAqd2FzVGhyb3duID0gd2FzVGhyb3duVmFsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaAppbmRleCAwMzRlMGMyMGE0
ZjhlYzRhN2IxNDI2OTY3Yzg4OTAzNTExZDVkYjdiLi41MGZhNThkZDA3OTg3YWNkMjBhZWZlZTdk
Nzc1YTQ5NTFhMGNmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRW52aXJvbm1lbnQuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTUHJvdG9j
b2xUeXBlcy5oIgogI2luY2x1ZGUgImJpbmRpbmdzL1NjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNjgsNyArNjgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0T2JqZWN0JiBpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpIGNvbnN0OwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGNhbGxG
dW5jdGlvbldpdGhFdmFsRW5hYmxlZChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBi
b29sJiBoYWRFeGNlcHRpb24pIGNvbnN0OwogICAgIHZvaWQgbWFrZUNhbGwoRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0KTsKLSAg
ICB2b2lkIG1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyosIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCYsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgIHZvaWQg
bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5nKiwgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
JiwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFByb3Rv
Y29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvdG9jb2xUeXBlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU5MmNlNmQ5ZmFjZDg0ZTlhMThk
YmY2NWY0MDY2MDcwZDNkOTA2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oCkBAIC0wLDAgKzEsMjc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yUHJvdG9j
b2xUeXBlc19oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworbmFtZXNwYWNlIFByb3RvY29s
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIE9wdE91dHB1dCB7CitwdWJsaWM6Cisg
ICAgT3B0T3V0cHV0KCkgOiBtX2Fzc2lnbmVkKGZhbHNlKSB7IH0KKworICAgIHZvaWQgb3BlcmF0
b3I9KFQgdmFsdWUpCisgICAgeworICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIG1f
YXNzaWduZWQgPSB0cnVlOworICAgIH0KKworICAgIGJvb2wgaXNBc3NpZ25lZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXNzaWduZWQ7IH0KKworICAgIFQgZ2V0VmFsdWUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGlzQXNzaWduZWQoKSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBUIG1fdmFsdWU7CisgICAgYm9vbCBtX2Fzc2lnbmVkOworCisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoT3B0T3V0cHV0KTsKK307CisKKy8vIFRoaXMgY2xhc3MgcHJvdmlk
ZXMgIlRyYWl0cyIgdHlwZSBmb3IgdGhlIGlucHV0IHR5cGUgVC4gSXQgaXMgcHJvZ3JhbW1lZCB1
c2luZyBDKysgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24KKy8vIHRlY2huaXF1ZS4gQnkgZGVmYXVs
dCBpdCBzaW1wbHkgdGFrZXMgIkl0ZW1UcmFpdHMiIHR5cGUgZnJvbSBULCBidXQgaXQgZG9lc24n
dCB3b3JrIHdpdGggdGhlIGJhc2UgdHlwZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0
IEFycmF5SXRlbUhlbHBlciB7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpJdGVtVHJhaXRzIFRy
YWl0czsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBBcnJheSA6IHB1YmxpYyBJ
bnNwZWN0b3JBcnJheUJhc2UgeworcHJpdmF0ZToKKyAgICBBcnJheSgpIHsgfQorCisgICAgSW5z
cGVjdG9yQXJyYXkqIG9wZW5BY2Nlc3NvcnMoKQorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKEluc3BlY3RvckFycmF5KSA9PSBzaXplb2YoQXJyYXk8VD4pLCBjYW5ub3RfY2Fz
dCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JBcnJheSo+KHN0YXRpY19j
YXN0PEluc3BlY3RvckFycmF5QmFzZSo+KHRoaXMpKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICB2
b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxUPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFycmF5SXRl
bUhlbHBlcjxUPjo6VHJhaXRzOjpwdXNoUmVmUHRyKHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFs
dWUpOworICAgIH0KKworICAgIHZvaWQgYWRkSXRlbShUIHZhbHVlKQorICAgIHsKKyAgICAgICAg
QXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSYXcodGhpcy0+b3BlbkFjY2Vzc29ycygp
LCB2YWx1ZSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5PFQ+KCkpOworICAg
IH0KK307CisKK3N0cnVjdCBTdHJ1Y3RJdGVtVHJhaXRzIHsKKyAgICBzdGF0aWMgdm9pZCBwdXNo
UmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
dmFsdWUpCisgICAgeworICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFN0cmluZz4geworICAgIHN0
cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5
KiBhcnJheSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJy
YXktPnB1c2hTdHJpbmcodmFsdWUpOworICAgICAgICB9CisgICAgfTsKK307CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8aW50PiB7CisgICAgc3RydWN0IFRyYWl0cyB7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBpbnQgdmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoSW50KHZhbHVlKTsKKyAgICAg
ICAgfQorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGRv
dWJsZT4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmF3
KEluc3BlY3RvckFycmF5KiBhcnJheSwgZG91YmxlIHZhbHVlKQorICAgICAgICB7CisgICAgICAg
ICAgICBhcnJheS0+cHVzaE51bWJlcih2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9OworfTsKKwor
dGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxib29sPiB7CisgICAgc3RydWN0IFRy
YWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5
LCBib29sIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaEJvb2xlYW4o
dmFsdWUpOworICAgICAgICB9CisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJh
eUl0ZW1IZWxwZXI8SW5zcGVjdG9yVmFsdWU+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAg
ICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+
cHVzaFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+Citz
dHJ1Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3Rvck9iamVjdD4geworICAgIHN0cnVjdCBUcmFp
dHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJh
eSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9CisgICAgfTsKK307CisKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yQXJyYXk+IHsKKyAgICBz
dHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JB
cnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICBhcnJheS0+cHVzaEFycmF5KHZhbHVlKTsKKyAgICAgICAgfQorICAgIH07
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxQcm90
b2NvbDo6QXJyYXk8VD4+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZv
aWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8UHJvdG9jb2w6
OkFycmF5PFQ+PiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9OworfTsKKworLy8gSGVscGVyIG1ldGhvZHMgZm9y
IFByb3RvY29sIGFuZCBvdGhlciBJbnNwZWN0b3IgdHlwZXMgYXJlIHByb3ZpZGVkIGJ5CisvLyBz
cGVjaWFsaXphdGlvbnMgb2YgQmluZGluZ1RyYWl0czxUPi4gU29tZSBhcmUgZ2VuZXJhdGVkIGZv
ciBwcm90b2NvbCB0eXBlcy4KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBCaW5kaW5n
VHJhaXRzIHsKKyAgICB0eXBlZGVmIFQgQmluZGluZ1R5cGU7CisKKyAgICBzdGF0aWMgSW5zcGVj
dG9yVmFsdWU6OlR5cGUgdHlwZVRhZygpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFQ+IHJ1bnRp
bWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pik7CisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZh
bHVlKik7CisjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorfTsKKwordGVtcGxhdGU8SW5zcGVj
dG9yVmFsdWU6OlR5cGUgVFlQRT4KK3N0cnVjdCBQcmltaXRpdmVCaW5kaW5nVHJhaXRzIHsKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVl
LT50eXBlKCkgPT0gVFlQRSk7CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQmluZGluZ1RyYWl0czxQcm90b2NvbDo6
QXJyYXk8VD4+IHsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheTxUPj4gcnVudGltZUNhc3Qo
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGFycmF5OworICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNB
cnJheSgmYXJyYXkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUo
YXJyYXkuZ2V0KCkpOworI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKEFycmF5PFQ+KSA9PSBzaXplb2YoSW5zcGVjdG9yQXJyYXkpLCB0eXBl
X2Nhc3RfcHJvYmxlbSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBcnJheTxUPio+KHN0
YXRpY19jYXN0PEluc3BlY3RvckFycmF5QmFzZSo+KGFycmF5LmdldCgpKSk7CisgICAgfQorCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0
ZWRUeXBlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYXJyYXk7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5
KCZhcnJheSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7IGkrKykKKyAgICAg
ICAgICAgIEJpbmRpbmdUcmFpdHM8VD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFycmF5
LT5nZXQoaSkuZ2V0KCkpOworICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9Owor
Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZT4geworI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZShJbnNwZWN0b3JWYWx1ZSopCisgICAgeworICAgIH0KKyNlbmRpZiAvLyAhQVNTRVJUX0RJ
U0FCTEVECit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3RvckFy
cmF5PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBl
OjpBcnJheT4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3JP
YmplY3Q+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5
cGU6Ok9iamVjdD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxTdHJpbmc+
IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6OlN0
cmluZz4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxib29sPiA6IHB1Ymxp
YyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpCb29sZWFuPiB7
IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPGRvdWJsZT4gOiBwdWJsaWMgUHJp
bWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6TnVtYmVyPiB7IH07CisK
Ky8vIEZJWE1FOiBBZGQgYW4gSW5zcGVjdG9yOjpUeXBlIHRhZyBmb3IgaW50IHNvIHdlIGNhbiBy
ZW1vdmUgdGhpcyBzcGVjaWFsIGNhc2UuCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQmluZGluZ1RyYWl0
czxpbnQ+IHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAg
ZG91YmxlIHY7CisgICAgICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc051bWJlcigmdik7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisgICAgICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGludD4odikpID09IHYpOworICAgIH0KKyNl
bmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECit9OworCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAor
Cit1c2luZyBQcm90b2NvbDo6QmluZGluZ1RyYWl0czsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQo
SW5zcGVjdG9yUHJvdG9jb2xUeXBlc19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MzlmNzgyMTIwMDNmZjU0MDFlY2I2MzlkZDVjM2UxMWFlMWFiYjkwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDI3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbnNwZWN0b3JUeXBlQnVpbGRlcl9oCi0jZGVmaW5lIElu
c3BlY3RvclR5cGVCdWlsZGVyX2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi1uYW1lc3Bh
Y2UgVHlwZUJ1aWxkZXIgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgT3B0T3V0cHV0
IHsKLXB1YmxpYzoKLSAgICBPcHRPdXRwdXQoKSA6IG1fYXNzaWduZWQoZmFsc2UpIHsgfQotCi0g
ICAgdm9pZCBvcGVyYXRvcj0oVCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIG1fdmFsdWUgPSB2YWx1
ZTsKLSAgICAgICAgbV9hc3NpZ25lZCA9IHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Fzc2ln
bmVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3NpZ25lZDsgfQotCi0gICAgVCBnZXRWYWx1ZSgpCi0g
ICAgewotICAgICAgICBBU1NFUlQoaXNBc3NpZ25lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1fdmFs
dWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFQgbV92YWx1ZTsKLSAgICBib29sIG1fYXNzaWdu
ZWQ7Ci0KLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcHRPdXRwdXQpOwotfTsKLQotLy8gVGhp
cyBjbGFzcyBwcm92aWRlcyAiVHJhaXRzIiB0eXBlIGZvciB0aGUgaW5wdXQgdHlwZSBULiBJdCBp
cyBwcm9ncmFtbWVkIHVzaW5nIEMrKyB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgotLy8gdGVjaG5p
cXVlLiBCeSBkZWZhdWx0IGl0IHNpbXBseSB0YWtlcyAiSXRlbVRyYWl0cyIgdHlwZSBmcm9tIFQs
IGJ1dCBpdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgYmFzZSB0eXBlcy4KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6
Okl0ZW1UcmFpdHMgVHJhaXRzOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEFy
cmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7Ci1wcml2YXRlOgotICAgIEFycmF5KCkg
eyB9Ci0KLSAgICBJbnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygpCi0gICAgewotICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yQXJyYXkpID09IHNpemVvZihBcnJheTxU
PiksIGNhbm5vdF9jYXN0KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3RvckFy
cmF5Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhpcykpOwotICAgIH0KLQot
cHVibGljOgotICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFQ+IHZhbHVlKQotICAgIHsKLSAg
ICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQdHIodGhpcy0+b3BlbkFj
Y2Vzc29ycygpLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRJdGVtKFQgdmFsdWUpCi0g
ICAgewotICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6cHVzaFJhdyh0aGlzLT5v
cGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
cnJheTxUPj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJy
YXk8VD4oKSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFN0cnVjdEl0ZW1UcmFpdHMgewotICAgIHN0
YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPElu
c3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFs
dWUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8U3Ry
aW5nPiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXco
SW5zcGVjdG9yQXJyYXkqIGFycmF5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBhcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Owot
fTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxpbnQ+IHsKLSAgICBzdHJ1
Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSog
YXJyYXksIGludCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hJbnQo
dmFsdWUpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJh
eUl0ZW1IZWxwZXI8ZG91YmxlPiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRp
YyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBkb3VibGUgdmFsdWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoTnVtYmVyKHZhbHVlKTsKLSAgICAgICAgfQot
ICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPGJvb2w+IHsK
LSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0
b3JBcnJheSogYXJyYXksIGJvb2wgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5
LT5wdXNoQm9vbGVhbih2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8
Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4gewotICAgIHN0cnVjdCBU
cmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBh
cnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0K
LXRlbXBsYXRlPD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVjdG9yT2JqZWN0PiB7Ci0g
ICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVj
dG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAg
ICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JB
cnJheT4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVm
UHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gdmFs
dWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoQXJyYXkodmFsdWUpOwotICAg
ICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQXJyYXlJ
dGVtSGVscGVyPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gewotICAgIHN0cnVjdCBUcmFpdHMgewot
ICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VD4+IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi0v
LyBIZWxwZXIgbWV0aG9kcyBmb3IgVHlwZUJ1aWxkZXIgYW5kIG90aGVyIEluc3BlY3RvciB0eXBl
cyBhcmUgcHJvdmlkZWQgYnkKLS8vIHNwZWNpYWxpemF0aW9ucyBvZiBCaW5kaW5nVHJhaXRzPFQ+
LiBTb21lIGFyZSBnZW5lcmF0ZWQgZm9yIHByb3RvY29sIHR5cGVzLgotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotc3RydWN0IEJpbmRpbmdUcmFpdHMgewotICAgIHR5cGVkZWYgVCBCaW5kaW5nVHlw
ZTsKLQotICAgIHN0YXRpYyBJbnNwZWN0b3JWYWx1ZTo6VHlwZSB0eXBlVGFnKCk7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8VD4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNF
eHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
Ci19OwotCi10ZW1wbGF0ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZSBUWVBFPgotc3RydWN0IFByaW1p
dGl2ZUJpbmRpbmdUcmFpdHMgewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAg
ewotICAgICAgICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKLSAgICB9Ci0jZW5kaWYg
Ly8gIUFTU0VSVF9ESVNBQkxFRAotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBC
aW5kaW5nVHJhaXRzPFR5cGVCdWlsZGVyOjpBcnJheTxUPj4gewotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXk7Ci0gICAgICAg
IGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBh
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS5nZXQoKSk7Ci0jZW5kaWYgLy8gIUFTU0VS
VF9ESVNBQkxFRAotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXk8VD4pID09IHNp
emVvZihJbnNwZWN0b3JBcnJheSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEFycmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4o
YXJyYXkuZ2V0KCkpKTsKLSAgICB9Ci0KLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc3RhdGlj
IHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKLSAgICAgICAgYm9v
bCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChjYXN0UmVzLCBjYXN0UmVzKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFy
cmF5LT5sZW5ndGgoKTsgaSsrKQotICAgICAgICAgICAgQmluZGluZ1RyYWl0czxUPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoYXJyYXktPmdldChpKS5nZXQoKSk7Ci0gICAgfQotI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBCaW5kaW5nVHJh
aXRzPEluc3BlY3RvclZhbHVlPiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHN0YXRpYyB2
b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZhbHVlKikKLSAgICB7Ci0g
ICAgfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yQXJyYXk+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdU
cmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6OkFycmF5PiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvck9iamVjdD4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6T2JqZWN0PiB7IH07Ci10ZW1wbGF0ZTw+IHN0
cnVjdCBCaW5kaW5nVHJhaXRzPFN0cmluZz4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0
czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6U3RyaW5nPiB7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBC
aW5kaW5nVHJhaXRzPGJvb2w+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVj
dG9yVmFsdWU6OlR5cGU6OkJvb2xlYW4+IHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdU
cmFpdHM8ZG91YmxlPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZh
bHVlOjpUeXBlOjpOdW1iZXI+IHsgfTsKLQotLy8gRklYTUU6IEFkZCBhbiBJbnNwZWN0b3I6OlR5
cGUgdGFnIGZvciBpbnQgc28gd2UgY2FuIHJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZS4KLXRlbXBs
YXRlPD4KLXN0cnVjdCBCaW5kaW5nVHJhaXRzPGludD4gewotI2lmICFBU1NFUlRfRElTQUJMRUQK
LSAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCi0gICAgewotICAgICAgICBkb3VibGUgdjsKLSAgICAgICAgYm9vbCBjYXN0UmVz
ID0gdmFsdWUtPmFzTnVtYmVyKCZ2KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBj
YXN0UmVzKTsKLSAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8
aW50Pih2KSkgPT0gdik7Ci0gICAgfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCi0KLXVzaW5nIFR5cGVCdWlsZGVyOjpCaW5kaW5n
VHJhaXRzOwotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKLQotI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUeXBlQnVpbGRlcl9oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJh
bWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUu
Y3BwCmluZGV4IGM3YTgyMmVmOWVmNDM5OTUyYWI3ZmYyMGI4NDQ1OWViODFmYTExZDMuLjdjOTUw
ZThiOTA3YWIzMWFmM2ZiZjY0MWRmODQwZTU4ZjFmYmU2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTU4LDkgKzU4
LDkgQEAgYm9vbCBTY3JpcHRDYWxsRnJhbWU6OmlzRXF1YWwoY29uc3QgU2NyaXB0Q2FsbEZyYW1l
JiBvKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLVBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1
aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6Q2FsbEZyYW1lPiBTY3JpcHRDYWxsRnJhbWU6OmJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q2FsbEZyYW1lOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpD
b25zb2xlOjpDYWxsRnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRGdW5jdGlvbk5hbWUobV9m
dW5jdGlvbk5hbWUpCiAgICAgICAgIC5zZXRVcmwobV9zY3JpcHROYW1lKQogICAgICAgICAuc2V0
TGluZU51bWJlcihtX2xpbmVOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAppbmRleCAwMDUyNGRjNTAxZDBlYjM1YjhkYjNlNDIx
Y2Y2ZDQ2ZjlkZmJmYmJjLi5lOWMxMGZmOWUzYmI2YTdlODk2MjdlYzkzZmVjZWViMDZkZGVhYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxG
cmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZy
YW1lLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAiSW5zcGVjdG9ySlNUeXBlQnVpbGRl
cnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaCIKICNlbmRpZgogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
YWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+IGJ1aWxkSW5zcGVjdG9yT2Jq
ZWN0KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCA5YjNjY2ExZGZhOWNh
YThiZWY0YmFlM2MzMTMyNDE0MTI1YTRkZjg4Li42ZjgxYTU4ZWRmY2NiM2E1NWJhYWVjNDNhMjM1
NzgyOWFlZDU3ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC0xMDcsOSArMTA3LDkgQEAgYm9vbCBTY3JpcHRDYWxs
U3RhY2s6OmlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKiBvKSBjb25zdAogfQogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0Q2FsbFN0YWNr
OjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2Ny
aXB0Q2FsbFN0YWNrOjpidWlsZEluc3BlY3RvckFycmF5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q2FsbEZyYW1lPj4gZnJhbWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGZyYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZy
YW1lcy0+YWRkSXRlbShtX2ZyYW1lcy5hdChpKS5idWlsZEluc3BlY3Rvck9iamVjdCgpKTsKICAg
ICByZXR1cm4gZnJhbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmgKaW5kZXggOWMyYTUzNGQ4ZTgyODU4ODIzNDUxZDFiMDY4YWFjN2M0
OGQxNzIyOS4uNjFkYTllNDg5OTkzYTgzY2UxMTI0M2FjN2VmMjJiMGI2MjQ0NWFmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCkBA
IC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VxdWFsKFNjcmlwdENh
bGxTdGFjayopIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNv
bnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNv
bnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKICNlbmRpZgog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGJlMDk2MTE2MTE3YTU3NzE2MGQ5NzU4
ZDM5NzdiOGY3NjE3NzE4NWUuLjZlZjYzZjAyN2ViMDljM2Y4NDk1YWY0ZGM0Y2QwMDZiZDBjYzY1
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJbnNwZWN0b3JB
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9lbmFibGVkID0gZmFsc2U7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBoaW50cykKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3QoUGFzc1JlZlB0cjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBoaW50cykKIHsKICAgICBpZiAobV9lbmFibGVkICYmIG1fZnJv
bnRlbmREaXNwYXRjaGVyKSB7CiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5pbnNwZWN0
KG9iamVjdFRvSW5zcGVjdCwgaGludHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKaW5kZXggMWQzMGUyZTAxNjk1
OWI0MDhhODNhNGVkOTU5NTRhNmM1YzUyYTlhMi4uNzA4ZDZiZThhMDAzYjUyMDM0OWJjNWMzMGNl
ZjQ4NmYzNmRhZjEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCkBAIC02MCwxNCArNjAsMTQgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwogCi0gICAgdm9pZCBp
bnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2Jq
ZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGludHMpOworICAgIHZv
aWQgaW5zcGVjdChQYXNzUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9i
amVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKTsKICAgICB2
b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBzY3JpcHQpOwogCiBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3JJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBWZWN0b3I8
U3RyaW5nPiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsKLSAgICBzdGQ6OnBhaXI8UmVm
UHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CisgICAgc3RkOjpwYWlyPFJlZlB0cjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IG1f
cGVuZGluZ0luc3BlY3REYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1ZTFiNjQ2NDYzZGY1NTFlODJkNDU5NTdiNWFm
N2M5NjBmZWMyNWVjLi4zYTUyOGFmYTJlNDUyMGIwZTQwNGQ4NzU2YjVkZDMwYWEyODgzYTNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMTc1LDE5ICsxNzUsMTkgQEAg
c3RhdGljIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0
ZXJuLCBib29sIGlzUmVnZXgpCiAKIHN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9y
U3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5
cGUqIG91dHB1dCkKIHsKLSAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpnZXRKU0VudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7CisgICAgaWYgKHR5cGVTdHJpbmcg
PT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0SlNFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgewogICAg
ICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2c7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpnZXRKU0VudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZSkpIHsKKyAgICBpZiAodHlw
ZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRKU0VudW1Db25zdGFudFZhbHVlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFs
dWF0ZSkpIHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZh
bHVhdGU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRKU0VudW1Db25zdGFudFZhbHVlKEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpTb3VuZCkp
IHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRKU0VudW1D
b25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjpUeXBlOjpTb3VuZCkpIHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb25UeXBlU291bmQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodHlw
ZVN0cmluZyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRKU0VudW1Db25zdGFudFZhbHVl
KEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBl
OjpQcm9iZSkpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpn
ZXRKU0VudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50QWN0aW9uOjpUeXBlOjpQcm9iZSkpIHsKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJy
ZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTIzOSw5ICsyMzksOSBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRB
Y3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nKiBlcnJvclN0cgogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNv
bnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4+JiBsb2NhdGlvbnMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJM
UmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4+JiBsb2NhdGlvbnMpCiB7Ci0gICAgbG9jYXRpb25zID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3Jl
YXRlKCk7CisgICAgbG9jYXRpb25zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFv
cHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewogICAgICAgICAqZXJyb3JTdHJpbmcg
PSBBU0NJSUxpdGVyYWwoIkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQu
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBsaQogICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMLCB1cmwsIGlzUmVnZXgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChi
cmVha3BvaW50SWRlbnRpZmllciwgaXQtPmtleSwgYnJlYWtwb2ludCk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gcmVz
b2x2ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElkZW50aWZpZXIsIGl0LT5rZXksIGJyZWFrcG9pbnQp
OwogICAgICAgICBpZiAobG9jYXRpb24pCiAgICAgICAgICAgICBsb2NhdGlvbnMtPmFkZEl0ZW0o
bG9jYXRpb24pOwogICAgIH0KQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxv
Y2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBsb2NhdGlv
biwgSgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBv
cHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBv
dXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJ
ZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKIHsKICAgICBKU0M6OlNvdXJjZUlE
IHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CkBAIC0zNjgsNyArMzY4LDcgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdAogICAgIHJlc3VtZShlcnJvclN0cmluZyk7CiB9CiAKLVBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFr
cG9pbnRJZGVudGlmaWVyLCBKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVh
a3BvaW50JiBicmVha3BvaW50KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50
KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIEpTQzo6U291cmNlSUQgc291cmNl
SUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7CiAgICAgU2NyaXB0c01h
cDo6aXRlcmF0b3Igc2NyaXB0SXRlcmF0b3IgPSBtX3NjcmlwdHMuZmluZChzb3VyY2VJRCk7CiAg
ICAgaWYgKHNjcmlwdEl0ZXJhdG9yID09IG1fc2NyaXB0cy5lbmQoKSkKQEAgLTM4OCwxNCArMzg4
LDE0IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyCiAgICAgICAgIGRlYnVnU2VydmVyQnJlYWtw
b2ludElEc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVh
a3BvaW50SURzLnNldChicmVha3BvaW50SWRlbnRpZmllciwgVmVjdG9yPEpTQzo6QnJlYWtwb2lu
dElEPigpKS5pdGVyYXRvcjsKICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvci0+
dmFsdWUuYXBwZW5kKGRlYnVnU2VydmVyQnJlYWtwb2ludElEKTsKIAotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQogICAgICAgICAu
c2V0U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIoc291cmNlSUQpKQogICAgICAgICAuc2V0TGluZU51
bWJlcihhY3R1YWxMaW5lTnVtYmVyKTsKICAgICBsb2NhdGlvbi0+c2V0Q29sdW1uTnVtYmVyKGFj
dHVhbENvbHVtbk51bWJlcik7CiAgICAgcmV0dXJuIGxvY2F0aW9uOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNv
bnN0IFN0cmluZyYgc2NyaXB0SURTdHIsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJ
c1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsKICAgICBi
b29sIGlzUmVnZXggPSBvcHRpb25hbElzUmVnZXggPyAqb3B0aW9uYWxJc1JlZ2V4IDogZmFsc2U7
CiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBzCiAgICAgICAgICplcnJvciA9ICJObyBzY3JpcHQgZm9yIGlkOiAiICsgc2Ny
aXB0SURTdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25E
ZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklk
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWls
cz4mIGRldGFpbHMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0
YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiBk
ZXRhaWxzKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewpAQCAtNTE2LDcgKzUxNiw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0
ZXJhbCgiSW50ZXJuYWwgZXJyb3IuIENvdWxkIG5vdCBjaGFuZ2UgcGF1c2Ugb24gZXhjZXB0aW9u
cyBzdGF0ZSIpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25D
YWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0
R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9v
bCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29s
KiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBj
b25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1
ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVj
dElkKGNhbGxGcmFtZUlkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7
CkBAIC01NTMsMTUgKzU1MywxNSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlw
dEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZQogICAgIH0KIH0K
IAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Y3VycmVudENhbGxGcmFtZXMoKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQogewogICAgIGlmICghbV9wYXVzZWRTY3Jp
cHRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIAogICAgIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0
Rm9yKG1fcGF1c2VkU2NyaXB0U3RhdGUpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6
Y3JlYXRlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJh
bWVzKG1fY3VycmVudENhbGxTdGFjayk7CkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBj
b25zdCBTY3JpcHQKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRp
b24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+a2V5LCBzb3VyY2VJRCwgYnJlYWtwb2ludCk7Cisg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxv
Y2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQtPmtleSwgc291cmNlSUQsIGJyZWFrcG9pbnQp
OwogICAgICAgICBpZiAobG9jYXRpb24pCiAgICAgICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+YnJlYWtwb2ludFJlc29sdmVkKGl0LT5rZXksIGxvY2F0aW9uKTsKICAgICB9CkBAIC02NjAs
OCArNjYwLDggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9u
UHJvYmUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLAogICAgIGludCBzYW1wbGVJZCA9IG1f
bmV4dFByb2JlU2FtcGxlSWQrKzsKIAogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRl
KTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcGF5bG9h
ZCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qoc2FtcGxlLCBvYmplY3RHcm91cEZvckJyZWFr
cG9pbnRBY3Rpb24oYWN0aW9uKSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
UHJvYmVTYW1wbGU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6UHJvYmVTYW1wbGU6
OmNyZWF0ZSgpCisgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHBh
eWxvYWQgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHNhbXBsZSwgb2JqZWN0R3JvdXBGb3JC
cmVha3BvaW50QWN0aW9uKGFjdGlvbikpOworICAgIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6
OlByb2JlU2FtcGxlPiByZXN1bHQgPSBQcm90b2NvbDo6RGVidWdnZXI6OlByb2JlU2FtcGxlOjpj
cmVhdGUoKQogICAgICAgICAuc2V0UHJvYmVJZChhY3Rpb24uaWRlbnRpZmllcikKICAgICAgICAg
LnNldFNhbXBsZUlkKHNhbXBsZUlkKQogICAgICAgICAuc2V0QmF0Y2hJZChoaXRDb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA4NDdlNzhiNjBmNWRjY2Y5NjlmYjNkMDEx
M2VkMjUyM2VhMDI3ZDNlLi43Y2ZkNTcwZTU3YzUyYWRlODhhZmYxYjc2YmQwZjcxZjgwMTA2NDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC03MSwyMCArNzEsMjAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5n
KiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+PiYgbG9jYXRpb25zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtw
b2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBv
cHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVh
bExvY2F0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJs
KEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkws
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVt
bk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9u
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+PiYgbG9jYXRpb25zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJl
YWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExv
Y2F0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElE
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0
Y2g+PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBT
dHJpbmcqIHNjcmlwdFNvdXJjZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBh
dXNlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZShFcnJv
clN0cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwT3ZlcihFcnJvclN0cmlu
ZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwSW50byhFcnJvclN0cmluZyopIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwT3V0KEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBwYXVzZVN0YXRlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXZhbHVh
dGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3Qg
Ym9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJv
b2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0
ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBi
b29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2Vw
dGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9v
bCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9v
bD4qIHdhc1Rocm93bikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNz
YWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlz
UGF1c2VkKCk7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkQ2xl
YXJHbG9iYWxPYmplY3QoKTsKIAogcHJpdmF0ZToKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxs
RnJhbWU+PiBjdXJyZW50Q2FsbEZyYW1lcygpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+
IGN1cnJlbnRDYWxsRnJhbWVzKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2Uo
SlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVh
bCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIG92ZXJyaWRlIGZpbmFsOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQgYnJlYWtwb2ludEFjdGlv
bklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9u
UHJvYmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiwgaW50
IGhpdENvdW50LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2FtcGxlKSBvdmVycmlk
ZSBmaW5hbDsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IHJlc29s
dmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIEpTQzo6U291
cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKICAgICBib29sIGFzc2VydFBhdXNlZChF
cnJvclN0cmluZyopOwogICAgIHZvaWQgY2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpOwog
ICAgIHZvaWQgY2xlYXJJbnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggODJkNTlhMDZlNWQzYzYzMGYwNGQyMWMxMzVjMDg4ZDQ5
ZThjMDA3ZC4uYWE5M2MzNDQ0MGY3OGE2ZDczNTJkNDhlNDFkYjE1NDkxYjkyNzIxOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTg0LDEwICs4NCwxMCBAQCB2b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+
IHBycFByb2ZpbGUpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hZGRQcm9maWxlSGVh
ZGVyKGNyZWF0ZVByb2ZpbGVIZWFkZXIoKnByb2ZpbGUpKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlNDOjpQcm9maWxlJiBwcm9maWxlKQorUGFzc1Jl
ZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlNDOjpQcm9maWxlJiBwcm9maWxlKQog
ewotICAgIHJldHVybiBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0
ZSgpCi0gICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVh
ZGVyOjpUeXBlSWQ6OkNQVSkKKyAgICByZXR1cm4gUHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxl
SGVhZGVyOjpjcmVhdGUoKQorICAgICAgICAuc2V0VHlwZUlkKFByb3RvY29sOjpQcm9maWxlcjo6
UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpDUFUpCiAgICAgICAgIC5zZXRVaWQocHJvZmlsZS51aWQo
KSkKICAgICAgICAgLnNldFRpdGxlKHByb2ZpbGUudGl0bGUoKSkKICAgICAgICAgLnJlbGVhc2Uo
KTsKQEAgLTEzMSwzMCArMTMxLDMwIEBAIFN0cmluZyBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpn
ZXRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoKQogICAgIHJldHVybiBtYWtlU3RyaW5nKFVzZXJJ
bml0aWF0ZWRQcm9maWxlTmFtZSwgJy4nLCBTdHJpbmc6Om51bWJlcihtX25leHRVc2VySW5pdGlh
dGVkUHJvZmlsZU51bWJlcisrKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+JiBoZWFkZXJzKQordm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJl
ZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4m
IGhlYWRlcnMpCiB7CiAgICAgbV9wcm9maWxlSGVhZGVyc1JlcXVlc3RlZCA9IHRydWU7Ci0gICAg
aGVhZGVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2Zp
bGVIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBoZWFkZXJzID0gUHJvdG9jb2w6OkFycmF5PFByb3Rv
Y29sOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChhdXRv
JiBwcm9maWxlIDogbV9wcm9maWxlcy52YWx1ZXMoKSkKICAgICAgICAgaGVhZGVycy0+YWRkSXRl
bShjcmVhdGVQcm9maWxlSGVhZGVyKCpwcm9maWxlLmdldCgpKSk7CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGVDYWxsPiBidWlsZElu
c3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGVOb2RlOjpDYWxsJiBjYWxsKQorc3RhdGlj
IFBhc3NSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZUNhbGw+IGJ1aWxk
SW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZU5vZGU6OkNhbGwmIGNhbGwpCiB7Ci0g
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGVDYWxsPiByZXN1
bHQgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlQ2FsbDo6Y3JlYXRlKCkK
KyAgICBSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZUNhbGw+IHJlc3Vs
dCA9IFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGVDYWxsOjpjcmVhdGUoKQogICAg
ICAgICAuc2V0U3RhcnRUaW1lKGNhbGwuc3RhcnRUaW1lKCkpCiAgICAgICAgIC5zZXRUb3RhbFRp
bWUoY2FsbC50b3RhbFRpbWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCitzdGF0
aWMgUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBidWlsZElu
c3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGVOb2RlKiBub2RlKQogewotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9k
ZUNhbGw+PiBjYWxscyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OkNQVVByb2ZpbGVOb2RlQ2FsbD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxQcm90b2NvbDo6QXJy
YXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZUNhbGw+PiBjYWxscyA9IFByb3Rv
Y29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlQ2FsbD46OmNyZWF0
ZSgpOwogICAgIGZvciAoY29uc3QgSlNDOjpQcm9maWxlTm9kZTo6Q2FsbCYgY2FsbCA6IG5vZGUt
PmNhbGxzKCkpCiAgICAgICAgIGNhbGxzLT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNh
bGwpKTsKIAotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2Rl
PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlOjpjcmVhdGUo
KQorICAgIFJlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiByZXN1bHQg
PSBQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlOjpjcmVhdGUoKQogICAgICAgICAu
c2V0SWQobm9kZS0+aWQoKSkKICAgICAgICAgLnNldENhbGxzKGNhbGxzLnJlbGVhc2UoKSk7CiAK
QEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmls
ZXI6OkNQVVByb2ZpbGVOb2RlPiBidWlsZEluc3BlY3Rvck9iamVjdChjbwogICAgIH0KIAogICAg
IGlmICghbm9kZS0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPj4gY2hp
bGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9m
aWxlTm9kZT46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3Rv
Y29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+PiBjaGlsZHJlbiA9IFByb3RvY29sOjpBcnJh
eTxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRlKCk7CiAgICAgICAg
IGZvciAoUmVmUHRyPEpTQzo6UHJvZmlsZU5vZGU+IHByb2ZpbGVOb2RlIDogbm9kZS0+Y2hpbGRy
ZW4oKSkKICAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0
KHByb2ZpbGVOb2RlLmdldCgpKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0Q2hpbGRyZW4oY2hpbGRy
ZW4pOwpAQCAtMTc3LDEzICsxNzcsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoY28KICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OkNQVVByb2ZpbGU+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmJ1aWxkUHJvZmlsZUlu
c3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2ZpbGUqIHByb2ZpbGUpCitQYXNzUmVmUHRyPFBy
b3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YnVp
bGRQcm9maWxlSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZSogcHJvZmlsZSkKIHsK
LSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BV
UHJvZmlsZU5vZGU+PiByb290Tm9kZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxQcm90b2Nv
bDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IHJvb3ROb2RlcyA9
IFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPjo6Y3Jl
YXRlKCk7CiAgICAgZm9yIChSZWZQdHI8SlNDOjpQcm9maWxlTm9kZT4gcHJvZmlsZU5vZGUgOiBw
cm9maWxlLT5oZWFkKCktPmNoaWxkcmVuKCkpCiAgICAgICAgIHJvb3ROb2Rlcy0+YWRkSXRlbShi
dWlsZEluc3BlY3Rvck9iamVjdChwcm9maWxlTm9kZS5nZXQoKSkpOwogCi0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpDUFVQcm9maWxlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxQcm90b2NvbDo6UHJvZmls
ZXI6OkNQVVByb2ZpbGU+IHJlc3VsdCA9IFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZTo6
Y3JlYXRlKCkKICAgICAgICAgLnNldFJvb3ROb2Rlcyhyb290Tm9kZXMpOwogCiAgICAgaWYgKHBy
b2ZpbGUtPmlkbGVUaW1lKCkpCkBAIC0xOTIsNyArMTkyLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmJ1aWxk
UHJvZmkKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IHJhd1VpZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4mIHByb2Zp
bGVPYmplY3QpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmF3VWlkLCBSZWZQdHI8UHJvdG9jb2w6OlByb2Zp
bGVyOjpDUFVQcm9maWxlPiYgcHJvZmlsZU9iamVjdCkKIHsKICAgICB1bnNpZ25lZCB1aWQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmF3VWlkKTsKICAgICBhdXRvIGl0ID0gbV9wcm9maWxlcy5m
aW5kKHVpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5kZXggNWUwMGZjMTViNjk3
MzgyZTZlODk1NmUyZDkxMTY5MjA5ZjM4ZTVhNi4uNjFhMzYxNDZkOWZmZDlmNDVkZDBkMGU0ZmE5
YTg3ZjQwNzZmZjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNjgsMTEg
KzY4LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclByb2ZpbGVzKEVycm9y
U3RyaW5nKikgb3ZlcnJpZGUgZmluYWwgeyByZXNldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4+Jikgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCB2b2lkIGdldENQVVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBpbnQgdWlkLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0
cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mKSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q1BVUHJvZmlsZShFcnJvclN0cmlu
ZyosIGludCB1aWQsIFJlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+Jikgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCB1aWQpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiBidWlsZFBy
b2ZpbGVJbnNwZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQcm9maWxlKik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlPiBidWlsZFByb2ZpbGVJbnNw
ZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQcm9maWxlKik7CiAKICAgICBlbnVtIFNob3VsZFJlY29t
cGlsZSB7IFNraXBSZWNvbXBpbGUsIFJlY29tcGlsZSB9OwogCkBAIC0xMDAsNyArMTAwLDcgQEAg
cHJpdmF0ZToKIAogICAgIFN0cmluZyBnZXRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoKTsKIAot
ICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVh
dGVQcm9maWxlSGVhZGVyKGNvbnN0IEpTQzo6UHJvZmlsZSYpOworICAgIFBhc3NSZWZQdHI8UHJv
dG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0
IEpTQzo6UHJvZmlsZSYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclByb2ZpbGVy
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5z
cGVjdG9yUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDIwMDc1MGI5MWUzMjQzMDMwYzA4NWE5
NzViMDVmODVjMWJjNThiZmYuLmVjMTdhMzE0NGNlOTQ2ZWI3Mzc0M2ExZTcyYjA2MDc1ODJiZjY3
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtODAsMTUgKzgwLDE1IEBA
IHN0YXRpYyBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlKFNjcmlwCiAgICAgcmV0dXJuIHByZXNlbnRTdGF0ZTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JS
YW5nZT4gYnVpbGRFcnJvclJhbmdlT2JqZWN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9rZW5M
b2NhdGlvbikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkVycm9yUmFuZ2U+IGJ1aWxkRXJyb3JSYW5nZU9iamVjdChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHRva2VuTG9jYXRpb24pCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OkVycm9yUmFuZ2U+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkVycm9yUmFuZ2U+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkVycm9yUmFuZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydE9mZnNldCh0b2tlbkxv
Y2F0aW9uLnN0YXJ0T2Zmc2V0KQogICAgICAgICAuc2V0RW5kT2Zmc2V0KHRva2VuTG9jYXRpb24u
ZW5kT2Zmc2V0KTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGUq
IHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3Nh
Z2UsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYg
cmFuZ2UpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9y
UmFuZ2U+JiByYW5nZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxWTSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKQEAgLTk4LDE2ICs5OCwxNiBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3Bl
YwogCiAgICAgc3dpdGNoIChlcnJvci5tX3N5bnRheEVycm9yVHlwZSkgewogICAgIGNhc2UgUGFy
c2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZToKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6Tm9uZTsKKyAgICAgICAgKnJl
c3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6Tm9u
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJl
Y292ZXJhYmxlOgotICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6U3ludGF4RXJyb3JUeXBlOjpJcnJlY292ZXJhYmxlOworICAgICAgICAqcmVzdWx0ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpJcnJlY292ZXJh
YmxlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcnNlckVycm9yOjpTeW50YXhFcnJvclVu
dGVybWluYXRlZExpdGVyYWw6Ci0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlVudGVybWluYXRlZExpdGVyYWw7CisgICAg
ICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5
cGU6OlVudGVybWluYXRlZExpdGVyYWw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFyc2Vy
RXJyb3I6OlN5bnRheEVycm9yUmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1bHQgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlJlY292ZXJhYmxlOwor
ICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJy
b3JUeXBlOjpSZWNvdmVyYWJsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnBhcnNlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWMKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29u
c3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9u
Q29udGV4dElkLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBn
ZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIGNvbnN0
IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoZXJyb3JTdHJpbmcs
IGV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVh
dGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cAogICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBjb25zdCBvcHRpb25hbEFyZ3Vt
ZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBjb25zdCBvcHRp
b25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29s
KiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQp
OwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTE2Myw3ICsxNjMs
NyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JS
dW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVy
bmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJvcGVydGllcykKK3ZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qgb3duUHJvcGVydGllcywg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3Bl
cnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkgewpAQCAtMTk3LDExICsxOTcsMTEgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6
OnJ1bihFcnJvclN0cmluZyopCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpn
ZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGxvY2F0aW9ucywg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+JiB0eXBlRGVzY3JpcHRpb25zKQordm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0
cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNj
cmlwdGlvbnMpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAg
IFZNJiB2bSA9IGdsb2JhbFZNKCk7Ci0gICAgdHlwZURlc2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVE
ZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIHR5cGVEZXNjcmlwdGlvbnMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3Jp
cHRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIXZtLmlzUHJvZmlsaW5nVHlwZXNXaXRoSGlnaEZp
ZGVsaXR5KCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJUaGUgVk0g
ZG9lcyBub3QgY3VycmVudGx5IGhhdmUgVHlwZSBJbmZvcm1hdGlvbi4iKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRS
dW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcqIGVyCiAgICAgICAg
IGxvY2F0aW9uLT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VJRCIpLCAmc291cmNlSURB
c1N0cmluZyk7CiAgICAgICAgIGxvY2F0aW9uLT5nZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkaXZv
dCIpLCAmZGl2b3QpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpUeXBlRGVzY3JpcHRpb24+IHR5cGVEZXNjcmlwdGlvbiA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+IHR5cGVE
ZXNjcmlwdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlv
bjo6Y3JlYXRlKCk7CiAgICAgICAgIGJvb2wgb2theTsKICAgICAgICAgdm0uaGlnaEZpZGVsaXR5
VHlwZVByb2ZpbGVyKCktPmdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3Rvcihz
dGF0aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgZGl2
b3QsIHNvdXJjZUlEQXNTdHJpbmcudG9JbnRQdHJTdHJpY3QoJm9rYXkpLCB0eXBlRGVzY3JpcHRp
b24pOwogICAgICAgICB0eXBlRGVzY3JpcHRpb25zLT5hZGRJdGVtKHR5cGVEZXNjcmlwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDRhYWZjYTYyZjI5NGY3MzhmM2EzYjAx
ZWY0YjZmMTIyNjNiZGM0YjIuLjcxNDNmNGE4ZGRhMmYzZmE1NWE0NzJlYWUwZDFhNWRkMzI0NjEx
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC02MSwxNCArNjEsMTQgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlIHsg
bV9lbmFibGVkID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5n
Kikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1
ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNv
bnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
dm9pZCBwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4mKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2
aXJ0dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1
ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2
b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJv
b2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
T2JqZWN0KEVycm9yU3RyaW5nKiwgY29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURl
c2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYg
aW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcmVs
ZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkg
b3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNl
dHMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4m
IGxvY2F0aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgbG9jYXRp
b25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhFcnJvclN0cmluZyopIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGluZyhFcnJv
clN0cmluZyopIG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vX19pbml0X18ucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2luaXRfXy5weQppbmRleCAwYjc2
MTE4Y2U1ZWUyOWY4NGNkNTUwZTk4NDIxODBhNGViMzQ5NzNhLi5iYjVmOTdlMmIzMTBhMDUyNWIw
YThlYTM5ZWIzNjg4ODI5ODIxZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2luaXRfXy5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9fX2luaXRfXy5weQpAQCAtOCw1ICs4
LDUgQEAgZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyIGltcG9ydCAqCiBm
cm9tIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgog
ZnJvbSBnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlciBpbXBvcnQgKgogZnJvbSBn
ZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCi1mcm9t
IGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIgaW1wb3J0ICoKLWZyb20gZ2VuZXJhdGVfdHlw
ZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX3Byb3RvY29s
X3R5cGVzX2hlYWRlciBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbiBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRl
ci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggMjZmNGIzOWQwM2FlNWJj
M2E0M2M2NDMxNGViODAyYjQyMjdmOTk4Ny4uYzBmZWY2NjVjYjZlNDIxMGFlZDdlNmEyNTZmMjRi
ZjQ2YTdiYTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEJh
Y2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICBkZWYgZ2Vu
ZXJhdGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBoZWFkZXJzID0gWwotICAgICAgICAgICAgJyJJ
bnNwZWN0b3Ilc1R5cGVCdWlsZGVycy5oIicgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRp
bmcoJ3ByZWZpeCcpLAorICAgICAgICAgICAgJyJJbnNwZWN0b3Ilc1Byb3RvY29sVHlwZXMuaCIn
ICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKICAgICAgICAgICAg
ICc8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+JywKICAgICAgICAgICAg
ICc8d3RmL1Bhc3NSZWZQdHIuaD4nLAogICAgICAgICAgICAgJzx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4nXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
YmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDg3YTJiOGZlMmRhYjE5
ZDdjMWExNDQ1NGI0YzZhMjE0MzlkZjMyODIuLjY4ZjIxNDAzMWY5NGUyMGM5YjQxZmFmOWNjODA2
NTA2ZTZkNjBhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlv
bi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTE0OCw3
ICsxNDgsNyBAQCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVu
dHMuYXBwZW5kKCcgICAgaWYgKCUocGFyYW1ldGVyTmFtZSlzKScgJSBwYXJhbV9hcmdzKQogICAg
ICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAg
ICBqc29uTWVzc2FnZS0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0
ZXJOYW1lKXMiKSwgJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAg
ICAgZWxpZiBwYXJhbWV0ZXIudHlwZS5pc19lbnVtKCk6Ci0gICAgICAgICAgICAgICAgb3V0X3Bh
cmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+JShrZXllZFNldE1l
dGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Z2V0JShmcmFtZXdvcmtQcmVmaXgpc0VudW1Db25zdGFudFZhbHVlKCUocGFyYW1l
dGVyTmFtZSlzKSk7JyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRl
cl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+JShrZXllZFNldE1ldGhvZClz
KEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Z2V0JShmcmFtZXdvcmtQcmVmaXgpc0VudW1Db25zdGFudFZhbHVlKCUocGFyYW1ldGVyTmFtZSlz
KSk7JyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG91
dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAganNvbk1lc3NhZ2UtPiUoa2V5ZWRT
ZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksICUocGFyYW1ldGVy
TmFtZSlzKTsnICUgcGFyYW1fYXJncykKIApAQCAtMjE1LDcgKzIxNSw3IEBAIGNsYXNzIEJhY2tl
bmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAg
IGlmIChvdXRfJShwYXJhbWV0ZXJOYW1lKXMpJyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICAgICAg
cmVzdWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUp
cyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAg
ICAgIGVsaWYgcGFyYW1ldGVyLnR5cGUuaXNfZW51bSgpOgotICAgICAgICAgICAgICAgICAgICBv
dXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICByZXN1bHQtPiUoa2V5ZWRT
ZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OmdldCUoZnJhbWV3b3JrUHJlZml4KXNFbnVtQ29uc3RhbnRWYWx1ZShvdXRf
JShwYXJhbWV0ZXJOYW1lKXMpKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICAgICAg
b3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgcmVzdWx0LT4lKGtleWVk
U2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpnZXQlKGZyYW1ld29ya1ByZWZpeClzRW51bUNvbnN0YW50VmFsdWUob3V0XyUo
cGFyYW1ldGVyTmFtZSlzKSk7JyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAg
ICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRl
ck5hbWUpcyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaGVhZGVyLnB5CmluZGV4IDNjNjY5ZTYyMzBmNjkxNTc3NmQzMWNkNDI1MGFiMTk5MDlkNmRh
ZTguLmE1NjgyMGE3YzE3OTliZDg2YTVhZmVjZGNlOTJiOTYyZjNjZTBmZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJf
aGVhZGVyLnB5CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEZyb250ZW5kRGlzcGF0Y2hlckhlYWRl
ckdlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToK
ICAgICAgICAgaGVhZGVycyA9IFsKLSAgICAgICAgICAgICciSW5zcGVjdG9yJXNUeXBlQnVpbGRl
cnMuaCInICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKKyAgICAg
ICAgICAgICciSW5zcGVjdG9yJXNQcm90b2NvbFR5cGVzLmgiJyAlIHNlbGYubW9kZWwoKS5mcmFt
ZXdvcmsuc2V0dGluZygncHJlZml4JyksCiAgICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaD4nLAogICAgICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+JywKICAgICAgICAgICAgICc8d3RmL1Bhc3NSZWZQdHIuaD4nLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3Bh
dGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggNjRlNWE2ODNmYjIxY2E5MGFmMzM0NTQyZGRk
NmJiMDc2ZmNmNjU3NC4uZjVhMzUyZWI1NTU1YzVjYzc5Y2I4ZmNlNzRiMmI5Y2E5MWJhYjI0NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC04Myw3ICs4Myw3IEBAIGNs
YXNzIEZyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6
CiAgICAgICAgICAgICAgICAgcGFyYW1ldGVyX3ZhbHVlID0gJyonICsgcGFyYW1ldGVyX3ZhbHVl
CiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIudHlwZS5pc19lbnVtKCk6CiAgICAgICAgICAgICAg
ICAgZnJhbWV3b3JrX3ByZWZpeCA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJl
Zml4JykKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfdmFsdWUgPSAnSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Z2V0JXNFbnVtQ29uc3RhbnRWYWx1ZSglcyknICUgKGZyYW1ld29ya19wcmVmaXgs
IHBhcmFtZXRlcl92YWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfdmFsdWUgPSAnSW5z
cGVjdG9yOjpQcm90b2NvbDo6Z2V0JXNFbnVtQ29uc3RhbnRWYWx1ZSglcyknICUgKGZyYW1ld29y
a19wcmVmaXgsIHBhcmFtZXRlcl92YWx1ZSkKIAogICAgICAgICAgICAgcGFyYW1ldGVyX2FyZ3Mg
PSB7CiAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlclR5cGUnOiBHZW5lcmF0b3IudHlwZV9zdHJp
bmdfZm9yX3N0YWNrX291dF9wYXJhbWV0ZXIocGFyYW1ldGVyKSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3Byb3Rv
Y29sX3R5cGVzX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YTYwMzljNGRmYjZmMWVlYzNlMzFhMDcwN2U4OGFjYjAyMTYyYjM1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBAIC0wLDAgKzEsMzQ2IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGlu
Z3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZwor
ZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gZ2VuZXJhdG9yIGltcG9ydCBHZW5l
cmF0b3IsIHVjZmlyc3QKK2Zyb20gZ2VuZXJhdG9yX3RlbXBsYXRlcyBpbXBvcnQgR2VuZXJhdG9y
VGVtcGxhdGVzIGFzIFRlbXBsYXRlcworZnJvbSBtb2RlbHMgaW1wb3J0IEVudW1UeXBlLCBPYmpl
Y3RUeXBlLCBQcmltaXRpdmVUeXBlLCBBbGlhc2VkVHlwZSwgQXJyYXlUeXBlLCBGcmFtZXdvcmtz
CisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIFByb3RvY29s
VHlwZXNIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bW9kZWwsIGlucHV0X2ZpbGVwYXRoKToKKyAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYs
IG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKKworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6
CisgICAgICAgIHJldHVybiAiSW5zcGVjdG9yJXNQcm90b2NvbFR5cGVzLmgiICUgc2VsZi5tb2Rl
bCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1
dChzZWxmKToKKyAgICAgICAgZG9tYWlucyA9IHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpCisg
ICAgICAgIHNlbGYuY2FsY3VsYXRlX3R5cGVzX3JlcXVpcmluZ19zaGFwZV9hc3NlcnRpb25zKGRv
bWFpbnMpCisKKyAgICAgICAgaGVhZGVycyA9IHNldChbCisgICAgICAgICAgICAnPGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+JywKKyAgICAgICAgICAgICc8d3RmL0Fzc2VydGlv
bnMuaD4nLAorICAgICAgICAgICAgJzx3dGYvUGFzc1JlZlB0ci5oPicKKyAgICAgICAgXSkKKwor
ICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIG5vdCBGcmFtZXdvcmtzLkphdmFT
Y3JpcHRDb3JlOgorICAgICAgICAgICAgaGVhZGVycy5hZGQoJzxpbnNwZWN0b3IvSW5zcGVjdG9y
SlNQcm90b2NvbFR5cGVzLmg+JykKKworICAgICAgICBleHBvcnRfbWFjcm8gPSBzZWxmLm1vZGVs
KCkuZnJhbWV3b3JrLnNldHRpbmcoJ2V4cG9ydF9tYWNybycsIE5vbmUpCisgICAgICAgIGZyYW1l
d29ya19wcmVmaXggPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpCisK
KyAgICAgICAgaGVhZGVyX2FyZ3MgPSB7CisgICAgICAgICAgICAnaGVhZGVyR3VhcmRTdHJpbmcn
OiByZS5zdWIoJ1xXKycsICdfJywgc2VsZi5vdXRwdXRfZmlsZW5hbWUoKSksCisgICAgICAgICAg
ICAnaW5jbHVkZXMnOiAnXG4nLmpvaW4oWycjaW5jbHVkZSAnICsgaGVhZGVyIGZvciBoZWFkZXIg
aW4gc29ydGVkKGhlYWRlcnMpXSksCisgICAgICAgICAgICAndHlwZWRlZnMnOiAnJywKKyAgICAg
ICAgICAgICdpbnB1dEZpbGVuYW1lJzogc2VsZi5faW5wdXRfZmlsZXBhdGgKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybl90eXBlID0gJ1N0cmluZycKKyAgICAgICAgcmV0dXJuX3R5cGVfd2l0
aF9leHBvcnRfbWFjcm8gPSBbcmV0dXJuX3R5cGVdCisgICAgICAgIGlmIGV4cG9ydF9tYWNybyBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybl90eXBlX3dpdGhfZXhwb3J0X21hY3JvWzow
XSA9IFtleHBvcnRfbWFjcm9dCisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ3BwSGVhZGVyUHJlbHVkZSkuc3Vic3RpdHV0ZShOb25l
LCAqKmhlYWRlcl9hcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCduYW1lc3BhY2UgUHJv
dG9jb2wgeycpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9mb3J3YXJk
X2RlY2xhcmF0aW9ucyhkb21haW5zKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dl
bmVyYXRlX3R5cGVkZWZzKGRvbWFpbnMpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJyVzIGdl
dCVzRW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpOycgJSAoJyAnLmpvaW4ocmV0dXJuX3R5cGVf
d2l0aF9leHBvcnRfbWFjcm8pLCBmcmFtZXdvcmtfcHJlZml4KSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKCdcbicuam9pbihbCisgICAgICAgICAgICAndGVtcGxhdGU8dHlwZW5hbWUgVD4gJXMg
Z2V0JXNFbnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSknICUgKHJldHVybl90eXBlLCBmcmFt
ZXdvcmtfcHJlZml4KSwKKyAgICAgICAgICAgICd7JywKKyAgICAgICAgICAgICcgICAgcmV0dXJu
IGdldCVzRW51bUNvbnN0YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50PihlbnVtVmFsdWUpKTsnICUg
ZnJhbWV3b3JrX3ByZWZpeCwKKyAgICAgICAgICAgICd9J10pKQorCisgICAgICAgIGJ1aWxkZXJf
c2VjdGlvbnMgPSBtYXAoc2VsZi5fZ2VuZXJhdGVfYnVpbGRlcnNfZm9yX2RvbWFpbiwgZG9tYWlu
cykKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKGZpbHRlcihsYW1iZGEgc2VjdGlvbjogbGVuKHNl
Y3Rpb24pID4gMCwgYnVpbGRlcl9zZWN0aW9ucykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLl9nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfYmluZGluZ190cmFpdHMoKSkK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBQcm90b2NvbCcpCisgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ3BwSGVhZGVyUG9zdGx1ZGUp
LnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCisgICAgICAgIHJldHVybiAiXG5cbiIu
am9pbihzZWN0aW9ucykKKworICAgICMgUHJpdmF0ZSBtZXRob2RzLgorCisgICAgIyBGSVhNRTog
bW92ZSBidWlsZGVycyBvdXQgb2YgY2xhc3NlcywgdW5jb21tZW50IGZvcndhcmQgZGVjbGFyYXRp
b24KKworICAgIGRlZiBfZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZiwgZG9tYWlu
cyk6CisgICAgICAgIHNlY3Rpb25zID0gW10KKworICAgICAgICBmb3IgZG9tYWluIGluIGRvbWFp
bnM6CisgICAgICAgICAgICBkZWNsYXJhdGlvbl90eXBlcyA9IFtkZWNsLnR5cGUgZm9yIGRlY2wg
aW4gZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zXQorICAgICAgICAgICAgb2JqZWN0X3R5cGVzID0g
ZmlsdGVyKGxhbWJkYSBfdHlwZTogaXNpbnN0YW5jZShfdHlwZSwgT2JqZWN0VHlwZSksIGRlY2xh
cmF0aW9uX3R5cGVzKQorICAgICAgICAgICAgZW51bV90eXBlcyA9IGZpbHRlcihsYW1iZGEgX3R5
cGU6IGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKSwgZGVjbGFyYXRpb25fdHlwZXMpCisgICAg
ICAgICAgICBpZiBsZW4ob2JqZWN0X3R5cGVzKSArIGxlbihlbnVtX3R5cGVzKSA9PSAwOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGRvbWFpbl9saW5lcyA9IFtdCisg
ICAgICAgICAgICBkb21haW5fbGluZXMuYXBwZW5kKCduYW1lc3BhY2UgJXMgeycgJSBkb21haW4u
ZG9tYWluX25hbWUpCisKKyAgICAgICAgICAgIG9iamVjdF90eXBlX25hbWVzID0gW190eXBlLnJh
d19uYW1lKCkgZm9yIF90eXBlIGluIG9iamVjdF90eXBlc10KKyAgICAgICAgICAgIGVudW1fdHlw
ZV9uYW1lcyA9IFtfdHlwZS5yYXdfbmFtZSgpIGZvciBfdHlwZSBpbiBlbnVtX3R5cGVzXQorCisg
ICAgICAgICAgICAjIEZvcndhcmQtZGVjbGFyZSBhbGwgY2xhc3NlcyBzbyB0aGUgdHlwZSBidWls
ZGVycyB3b24ndCBicmVhayBpZiByZWFycmFuZ2VkLgorICAgICAgICAgICAgZG9tYWluX2xpbmVz
LmV4dGVuZCgnY2xhc3MgJXM7JyAlIG5hbWUgZm9yIG5hbWUgaW4gc29ydGVkKG9iamVjdF90eXBl
X25hbWVzKSkKKyAgICAgICAgICAgIGRvbWFpbl9saW5lcy5leHRlbmQoJ2VudW0gY2xhc3MgJXM7
JyAlIG5hbWUgZm9yIG5hbWUgaW4gc29ydGVkKGVudW1fdHlwZV9uYW1lcykpCisgICAgICAgICAg
ICBkb21haW5fbGluZXMuYXBwZW5kKCd9IC8vICVzJyAlIGRvbWFpbi5kb21haW5fbmFtZSkKKyAg
ICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChHZW5lcmF0b3Iud3JhcF93aXRoX2d1YXJkX2Zvcl9k
b21haW4oZG9tYWluLCAnXG4nLmpvaW4oZG9tYWluX2xpbmVzKSkpCisKKyAgICAgICAgaWYgbGVu
KHNlY3Rpb25zKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICByZXR1cm4gIiIiLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCislcworLy8gRW5k
IG9mIGZvcndhcmQgZGVjbGFyYXRpb25zLgorIiIiICUgJ1xuXG4nLmpvaW4oc2VjdGlvbnMpCisK
KyAgICBkZWYgX2dlbmVyYXRlX3R5cGVkZWZzKHNlbGYsIGRvbWFpbnMpOgorICAgICAgICBzZWN0
aW9ucyA9IG1hcChzZWxmLl9nZW5lcmF0ZV90eXBlZGVmc19mb3JfZG9tYWluLCBkb21haW5zKQor
ICAgICAgICBzZWN0aW9ucyA9IGZpbHRlcihsYW1iZGEgdGV4dDogbGVuKHRleHQpID4gMCwgc2Vj
dGlvbnMpCisKKyAgICAgICAgaWYgbGVuKHNlY3Rpb25zKSA9PSAwOgorICAgICAgICAgICAgcmV0
dXJuICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIiIiLy8gVHlwZWRlZnMu
CislcworLy8gRW5kIG9mIHR5cGVkZWZzLiIiIiAlICdcblxuJy5qb2luKHNlY3Rpb25zKQorCisg
ICAgZGVmIF9nZW5lcmF0ZV90eXBlZGVmc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CisgICAg
ICAgIHByaW1pdGl2ZV9kZWNsYXJhdGlvbnMgPSBmaWx0ZXIobGFtYmRhIGRlY2w6IGlzaW5zdGFu
Y2UoZGVjbC50eXBlLCBBbGlhc2VkVHlwZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucykKKyAg
ICAgICAgaWYgbGVuKHByaW1pdGl2ZV9kZWNsYXJhdGlvbnMpID09IDA6CisgICAgICAgICAgICBy
ZXR1cm4gJycKKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIGZvciBkZWNsYXJhdGlv
biBpbiBwcmltaXRpdmVfZGVjbGFyYXRpb25zOgorICAgICAgICAgICAgcHJpbWl0aXZlX25hbWUg
PSBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKGRlY2xhcmF0aW9uLnR5cGUu
YWxpYXNlZF90eXBlKQorICAgICAgICAgICAgdHlwZWRlZl9saW5lcyA9IFtdCisgICAgICAgICAg
ICBpZiBsZW4oZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pID4gMDoKKyAgICAgICAgICAgICAgICB0
eXBlZGVmX2xpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgZGVjbGFyYXRpb24uZGVzY3JpcHRpb24p
CisgICAgICAgICAgICB0eXBlZGVmX2xpbmVzLmFwcGVuZCgndHlwZWRlZiAlcyAlczsnICUgKHBy
aW1pdGl2ZV9uYW1lLCBkZWNsYXJhdGlvbi50eXBlX25hbWUpKQorICAgICAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKCdcbicuam9pbih0eXBlZGVmX2xpbmVzKSkKKworICAgICAgICBsaW5lcyA9IFtd
CisgICAgICAgIGxpbmVzLmFwcGVuZCgnbmFtZXNwYWNlICVzIHsnICUgZG9tYWluLmRvbWFpbl9u
YW1lKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ1xuXG4nLmpvaW4oc2VjdGlvbnMpKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoJ30gLy8gJXMnICUgZG9tYWluLmRvbWFpbl9uYW1lKQorICAgICAgICBy
ZXR1cm4gR2VuZXJhdG9yLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ1xuJy5q
b2luKGxpbmVzKSkKKworICAgIGRlZiBfZ2VuZXJhdGVfYnVpbGRlcnNfZm9yX2RvbWFpbihzZWxm
LCBkb21haW4pOgorICAgICAgICBzZWN0aW9ucyA9IFtdCisKKyAgICAgICAgZm9yIHR5cGVfZGVj
bGFyYXRpb24gaW4gZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zOgorICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZSh0eXBlX2RlY2xhcmF0aW9uLnR5cGUsIEVudW1UeXBlKToKKyAgICAgICAgICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVtX2RlY2xhcmF0
aW9uKHR5cGVfZGVjbGFyYXRpb24pKQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHR5cGVf
ZGVjbGFyYXRpb24udHlwZSwgT2JqZWN0VHlwZSk6CisgICAgICAgICAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKHNlbGYuX2dlbmVyYXRlX2NsYXNzX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24odHlwZV9k
ZWNsYXJhdGlvbiwgZG9tYWluKSkKKworICAgICAgICBzZWN0aW9ucyA9IGZpbHRlcihsYW1iZGEg
c2VjdGlvbjogbGVuKHNlY3Rpb24pID4gMCwgc2VjdGlvbnMpCisgICAgICAgIGlmIGxlbihzZWN0
aW9ucykgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiAnJworCisgICAgICAgIGxpbmVzID0gW10K
KyAgICAgICAgbGluZXMuYXBwZW5kKCduYW1lc3BhY2UgJXMgeycgJSBkb21haW4uZG9tYWluX25h
bWUpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnXG4nLmpvaW4oc2VjdGlvbnMpKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJ30gLy8gJXMnICUgZG9tYWluLmRvbWFpbl9uYW1lKQorICAgICAgICByZXR1
cm4gR2VuZXJhdG9yLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ1xuJy5qb2lu
KGxpbmVzKSkKKworICAgIGRlZiBfZ2VuZXJhdGVfY2xhc3NfZm9yX29iamVjdF9kZWNsYXJhdGlv
bihzZWxmLCB0eXBlX2RlY2xhcmF0aW9uLCBkb21haW4pOgorICAgICAgICBpZiBsZW4odHlwZV9k
ZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpID09IDA6CisgICAgICAgICAgICByZXR1cm4gJycKKwor
ICAgICAgICBlbnVtX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogaXNpbnN0YW5jZSht
ZW1iZXIudHlwZSwgRW51bVR5cGUpIGFuZCBtZW1iZXIudHlwZS5pc19hbm9ueW1vdXMsIHR5cGVf
ZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQorICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmls
dGVyKGxhbWJkYSBtZW1iZXI6IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWwsIHR5cGVfZGVjbGFyYXRp
b24udHlwZV9tZW1iZXJzKQorICAgICAgICBvcHRpb25hbF9tZW1iZXJzID0gZmlsdGVyKGxhbWJk
YSBtZW1iZXI6IG1lbWJlci5pc19vcHRpb25hbCwgdHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJl
cnMpCisgICAgICAgIG9iamVjdF9uYW1lID0gdHlwZV9kZWNsYXJhdGlvbi50eXBlX25hbWUKKwor
ICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGlmIGxlbih0eXBlX2RlY2xhcmF0aW9uLmRlc2Ny
aXB0aW9uKSA+IDA6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIHR5cGVf
ZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pCisgICAgICAgIGJhc2VfY2xhc3MgPSAnSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QnCisgICAgICAgIGlmIG5vdCBHZW5lcmF0b3IudHlwZV9oYXNfb3Bl
bl9maWVsZHModHlwZV9kZWNsYXJhdGlvbi50eXBlKToKKyAgICAgICAgICAgIGJhc2VfY2xhc3Mg
PSBiYXNlX2NsYXNzICsgJ0Jhc2UnCisgICAgICAgIGxpbmVzLmFwcGVuZCgnY2xhc3MgJXMgOiBw
dWJsaWMgJXMgeycgJSAob2JqZWN0X25hbWUsIGJhc2VfY2xhc3MpKQorICAgICAgICBsaW5lcy5h
cHBlbmQoJ3B1YmxpYzonKQorICAgICAgICBmb3IgZW51bV9tZW1iZXIgaW4gZW51bV9tZW1iZXJz
OgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgLy8gTmFtZWQgYWZ0ZXIgcHJvcGVydHkg
bmFtZSBcJyVzXCcgd2hpbGUgZ2VuZXJhdGluZyAlcy4nICUgKGVudW1fbWVtYmVyLm1lbWJlcl9u
YW1lLCBvYmplY3RfbmFtZSkpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJh
dGVfc3RydWN0X2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZW51bV9tZW1iZXIpKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfYnVpbGRlcl9zdGF0ZV9lbnVtKHR5cGVfZGVj
bGFyYXRpb24pKQorCisgICAgICAgIGNvbnN0cnVjdG9yX2V4YW1wbGUgPSBbXQorICAgICAgICBj
b25zdHJ1Y3Rvcl9leGFtcGxlLmFwcGVuZCgnICAgICAqIFJlZlB0cjwlcz4gcmVzdWx0ID0gJXM6
OmNyZWF0ZSgpJyAlIChvYmplY3RfbmFtZSwgb2JqZWN0X25hbWUpKQorICAgICAgICBmb3IgbWVt
YmVyIGluIHJlcXVpcmVkX21lbWJlcnM6CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcl9leGFtcGxl
LmFwcGVuZCgnICAgICAqICAgICAuc2V0JXMoLi4uKScgJSB1Y2ZpcnN0KG1lbWJlci5tZW1iZXJf
bmFtZSkpCisKKyAgICAgICAgYnVpbGRlcl9hcmdzID0geworICAgICAgICAgICAgJ29iamVjdFR5
cGUnOiBvYmplY3RfbmFtZSwKKyAgICAgICAgICAgICdjb25zdHJ1Y3RvckV4YW1wbGUnOiAnXG4n
LmpvaW4oY29uc3RydWN0b3JfZXhhbXBsZSkgKyAnOycsCisgICAgICAgIH0KKworICAgICAgICBs
aW5lcy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlByb3RvY29sT2JqZWN0QnVpbGRlckRlY2xh
cmF0aW9uUHJlbHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmJ1aWxkZXJfYXJncykpCisgICAgICAg
IGZvciB0eXBlX21lbWJlciBpbiByZXF1aXJlZF9tZW1iZXJzOgorICAgICAgICAgICAgbGluZXMu
YXBwZW5kKHNlbGYuX2dlbmVyYXRlX2J1aWxkZXJfc2V0dGVyX2Zvcl9tZW1iZXIodHlwZV9tZW1i
ZXIsIGRvbWFpbikpCisgICAgICAgIGxpbmVzLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuUHJv
dG9jb2xPYmplY3RCdWlsZGVyRGVjbGFyYXRpb25Qb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAq
KmJ1aWxkZXJfYXJncykpCisgICAgICAgIGZvciBtZW1iZXIgaW4gb3B0aW9uYWxfbWVtYmVyczoK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV91bmNoZWNrZWRfc2V0dGVy
X2Zvcl9tZW1iZXIobWVtYmVyLCBkb21haW4pKQorCisgICAgICAgIGlmIEdlbmVyYXRvci50eXBl
X2hhc19vcGVuX2ZpZWxkcyh0eXBlX2RlY2xhcmF0aW9uLnR5cGUpOgorICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgLy8gUHJvcGVydHkg
bmFtZXMgZm9yIHR5cGUgZ2VuZXJhdGVkIGFzIG9wZW4uJykKKyAgICAgICAgICAgIGZvciB0eXBl
X21lbWJlciBpbiB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVyczoKKyAgICAgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3QgY2hhciogJXM7JyAlIHVjZmlyc3QodHlw
ZV9tZW1iZXIubWVtYmVyX25hbWUpKQorCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfTsnKQorICAg
ICAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisK
KyAgICBkZWYgX2dlbmVyYXRlX3N0cnVjdF9mb3JfZW51bV9kZWNsYXJhdGlvbihzZWxmLCBlbnVt
X2RlY2xhcmF0aW9uKToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQo
Jy8qICVzICovJyAlIGVudW1fZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pCisgICAgICAgIGxpbmVz
LmV4dGVuZChzZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9yX2VudW1fdHlwZShlbnVtX2RlY2xhcmF0
aW9uLnR5cGVfbmFtZSwgZW51bV9kZWNsYXJhdGlvbi50eXBlKSkKKyAgICAgICAgcmV0dXJuICdc
bicuam9pbihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfc3RydWN0X2Zvcl9hbm9ueW1vdXNf
ZW51bV9tZW1iZXIoc2VsZiwgZW51bV9tZW1iZXIpOgorICAgICAgICBkZWYgYXBwbHlfaW5kZW50
YXRpb24obGluZSk6CisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoKCcjJywgJy8qJywg
JyovJywgJy8vJykpIG9yIGxlbihsaW5lKSBpcyAwOgorICAgICAgICAgICAgICAgIHJldHVybiBs
aW5lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAnICAgICcgKyBs
aW5lCisKKyAgICAgICAgaW5kZW50ZWRfbGluZXMgPSBtYXAoYXBwbHlfaW5kZW50YXRpb24sIHNl
bGYuX2dlbmVyYXRlX3N0cnVjdF9mb3JfZW51bV90eXBlKGVudW1fbWVtYmVyLm1lbWJlcl9uYW1l
LCBlbnVtX21lbWJlci50eXBlKSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihpbmRlbnRlZF9s
aW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVtX3R5cGUoc2VsZiwgZW51
bV9uYW1lLCBlbnVtX3R5cGUpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGVudW1fbmFt
ZSA9IHVjZmlyc3QoZW51bV9uYW1lKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ2VudW0gY2xhc3Mg
JXMgeycgJSBlbnVtX25hbWUpCisgICAgICAgIGZvciBlbnVtX3ZhbHVlIGluIGVudW1fdHlwZS5l
bnVtX3ZhbHVlcygpOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgJXMgPSAlcywnICUg
KEdlbmVyYXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpLCBzZWxm
LmVuY29kaW5nX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpKSkKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCd9OyAvLyBlbnVtIGNsYXNzICVzJyAlIGVudW1fbmFtZSkKKyAgICAgICAgcmV0dXJuIGxp
bmVzICAjIFRoZSBjYWxsZXIgbWF5IHdhbnQgdG8gYWRqdXN0IGluZGVudGF0aW9uLCBzbyBkb24n
dCBqb2luIHRoZXNlIGxpbmVzLgorCisgICAgZGVmIF9nZW5lcmF0ZV9idWlsZGVyX3N0YXRlX2Vu
dW0oc2VsZiwgdHlwZV9kZWNsYXJhdGlvbik6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAg
cmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVtYmVyLmlzX29w
dGlvbmFsLCB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKKyAgICAgICAgZW51bV92YWx1
ZXMgPSBbXQorCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGVudW0geycpCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgICAgICBOb0ZpZWxkc1NldCA9IDAsJykKKyAgICAgICAgZm9yIGkgaW4g
cmFuZ2UobGVuKHJlcXVpcmVkX21lbWJlcnMpKToKKyAgICAgICAgICAgIGVudW1fdmFsdWUgPSAi
JXNTZXQiICUgdWNmaXJzdChyZXF1aXJlZF9tZW1iZXJzW2ldLm1lbWJlcl9uYW1lKQorICAgICAg
ICAgICAgZW51bV92YWx1ZXMuYXBwZW5kKGVudW1fdmFsdWUpCisgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAgICAgJXMgPSAxIDw8ICVkLCcgJSAoZW51bV92YWx1ZSwgaSkpCisgICAgICAg
IGlmIGxlbihlbnVtX3ZhbHVlcykgPiAwOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
ICAgIEFsbEZpZWxkc1NldCA9ICglcyknICUgJyB8ICcuam9pbihlbnVtX3ZhbHVlcykpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgQWxsRmllbGRzU2V0
ID0gMCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIH07JykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCcnKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIF9nZW5l
cmF0ZV9idWlsZGVyX3NldHRlcl9mb3JfbWVtYmVyKHNlbGYsIHR5cGVfbWVtYmVyLCBkb21haW4p
OgorICAgICAgICBzZXR0ZXJfYXJncyA9IHsKKyAgICAgICAgICAgICdjYW1lbE5hbWUnOiB1Y2Zp
cnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lKSwKKyAgICAgICAgICAgICdmcmFtZXdvcmtQcmVm
aXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpLAorICAgICAgICAg
ICAgJ2tleWVkU2V0JzogR2VuZXJhdG9yLmtleWVkX3NldF9tZXRob2RfZm9yX3R5cGUodHlwZV9t
ZW1iZXIudHlwZSksCisgICAgICAgICAgICAnbmFtZSc6IHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1l
LAorICAgICAgICAgICAgJ3BhcmFtZXRlclR5cGUnOiBHZW5lcmF0b3IudHlwZV9zdHJpbmdfZm9y
X3R5cGVfbWVtYmVyKHR5cGVfbWVtYmVyKQorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBb
XQorICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAg
ICBCdWlsZGVyPFNUQVRFIHwgJShjYW1lbE5hbWUpc1NldD4mIHNldCUoY2FtZWxOYW1lKXMoJShw
YXJhbWV0ZXJUeXBlKXMgdmFsdWUpJyAlIHNldHRlcl9hcmdzKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICAgICAgeycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoIShTVEFURSAmICUoY2FtZWxOYW1lKXNTZXQpLCBwcm9wZXJ0eV8lKG5hbWUpc19h
bHJlYWR5X3NldCk7JyAlIHNldHRlcl9hcmdzKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UodHlw
ZV9tZW1iZXIudHlwZSwgRW51bVR5cGUpOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
ICAgICAgICBtX3Jlc3VsdC0+JShrZXllZFNldClzKEFTQ0lJTGl0ZXJhbCgiJShuYW1lKXMiKSwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0JShmcmFtZXdvcmtQcmVmaXgpc0VudW1Db25zdGFudFZh
bHVlKHN0YXRpY19jYXN0PGludD4odmFsdWUpKSk7JyAlIHNldHRlcl9hcmdzKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICBtX3Jlc3VsdC0+JShr
ZXllZFNldClzKEFTQ0lJTGl0ZXJhbCgiJShuYW1lKXMiKSwgdmFsdWUpOycgJSBzZXR0ZXJfYXJn
cykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPCUo
Y2FtZWxOYW1lKXNTZXQ+KCk7JyAlIHNldHRlcl9hcmdzKQorICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICAgICAgfScpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYg
X2dlbmVyYXRlX3VuY2hlY2tlZF9zZXR0ZXJfZm9yX21lbWJlcihzZWxmLCB0eXBlX21lbWJlciwg
ZG9tYWluKToKKyAgICAgICAgc2V0dGVyX2FyZ3MgPSB7CisgICAgICAgICAgICAnY2FtZWxOYW1l
JzogdWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJfbmFtZSksCisgICAgICAgICAgICAnZnJhbWV3
b3JrUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKKyAg
ICAgICAgICAgICdrZXllZFNldCc6IEdlbmVyYXRvci5rZXllZF9zZXRfbWV0aG9kX2Zvcl90eXBl
KHR5cGVfbWVtYmVyLnR5cGUpLAorICAgICAgICAgICAgJ25hbWUnOiB0eXBlX21lbWJlci5tZW1i
ZXJfbmFtZSwKKyAgICAgICAgICAgICdwYXJhbWV0ZXJUeXBlJzogR2VuZXJhdG9yLnR5cGVfc3Ry
aW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlcikKKyAgICAgICAgfQorCisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcnKQorICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICB2b2lkIHNldCUoY2FtZWxOYW1lKXMoJShwYXJhbWV0ZXJUeXBlKXMgdmFsdWUpJyAlIHNl
dHRlcl9hcmdzKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB7JykKKyAgICAgICAgaWYgaXNp
bnN0YW5jZSh0eXBlX21lbWJlci50eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6JShrZXllZFNldClzKEFTQ0lJTGl0
ZXJhbCgiJShuYW1lKXMiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0JShmcmFtZXdvcmtQcmVm
aXgpc0VudW1Db25zdGFudFZhbHVlKHN0YXRpY19jYXN0PGludD4odmFsdWUpKSk7JyAlIHNldHRl
cl9hcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAg
IEluc3BlY3Rvck9iamVjdEJhc2U6OiUoa2V5ZWRTZXQpcyhBU0NJSUxpdGVyYWwoIiUobmFtZSlz
IiksIHZhbHVlKTsnICUgc2V0dGVyX2FyZ3MpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIH0n
KQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9m
b3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfYmluZGluZ190cmFpdHMoc2VsZik6CisgICAgICAgICMg
QSBsaXN0IG9mIChidWlsZGVyX3R5cGUsIG5lZWRzX3J1bnRpbWVfY2FzdCkKKyAgICAgICAgdHlw
ZV9hcmd1bWVudHMgPSBbXQorCisgICAgICAgIGZvciBkb21haW4gaW4gc2VsZi5kb21haW5zX3Rv
X2dlbmVyYXRlKCk6CisgICAgICAgICAgICBkZWNsYXJhdGlvbnNfdG9fZ2VuZXJhdGUgPSBmaWx0
ZXIobGFtYmRhIGRlY2w6IHNlbGYudHlwZV9uZWVkc19zaGFwZV9hc3NlcnRpb25zKGRlY2wudHlw
ZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucykKKworICAgICAgICAgICAgZm9yIHR5cGVfZGVj
bGFyYXRpb24gaW4gZGVjbGFyYXRpb25zX3RvX2dlbmVyYXRlOgorICAgICAgICAgICAgICAgIGZv
ciB0eXBlX21lbWJlciBpbiB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVyczoKKyAgICAgICAg
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX21lbWJlci50eXBlLCBFbnVtVHlwZSk6Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlX2FyZ3VtZW50cy5hcHBlbmQoKEdlbmVyYXRvci5w
cm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIHR5cGVfZGVj
bGFyYXRpb24pLCBGYWxzZSkpCisKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVf
ZGVjbGFyYXRpb24udHlwZSwgT2JqZWN0VHlwZSk6CisgICAgICAgICAgICAgICAgICAgIHR5cGVf
YXJndW1lbnRzLmFwcGVuZCgoR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBl
KHR5cGVfZGVjbGFyYXRpb24udHlwZSksIEdlbmVyYXRvci50eXBlX25lZWRzX3J1bnRpbWVfY2Fz
dHModHlwZV9kZWNsYXJhdGlvbi50eXBlKSkpCisKKyAgICAgICAgc3RydWN0X2tleXdvcmRzID0g
WydzdHJ1Y3QnXQorICAgICAgICBmdW5jdGlvbl9rZXl3b3JkcyA9IFsnc3RhdGljIHZvaWQnXQor
ICAgICAgICBleHBvcnRfbWFjcm8gPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ2V4
cG9ydF9tYWNybycsIE5vbmUpCisgICAgICAgIGlmIGV4cG9ydF9tYWNybyBpcyBub3QgTm9uZToK
KyAgICAgICAgICAgIHN0cnVjdF9rZXl3b3Jkcy5hcHBlbmQoZXhwb3J0X21hY3JvKQorICAgICAg
ICAgICAgI2Z1bmN0aW9uX2tleXdvcmRzWzE6MV0gPSBbZXhwb3J0X21hY3JvXQorCisgICAgICAg
IGxpbmVzID0gW10KKyAgICAgICAgZm9yIGFyZ3VtZW50IGluIHR5cGVfYXJndW1lbnRzOgorICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCd0ZW1wbGF0ZTw+ICVzIEJpbmRpbmdUcmFpdHM8JXM+IHsn
ICUgKCcgJy5qb2luKHN0cnVjdF9rZXl3b3JkcyksIGFyZ3VtZW50WzBdKSkKKyAgICAgICAgICAg
IGlmIGFyZ3VtZW50WzFdOgorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnc3RhdGljIFBh
c3NSZWZQdHI8JXM+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4gdmFsdWUpOycgJSBhcmd1bWVudFswXSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
I2lmICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCclcyBhc3Nl
cnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7JyAlICcg
Jy5qb2luKGZ1bmN0aW9uX2tleXdvcmRzKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnI2Vu
ZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd9Oycp
CisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90
eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRiN2U5MzNjMzhiNjZkZTg4MWFhNjAwOWI0YjgxMzBjY2VjM2MyM2MKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtMCww
ICsxLDE4NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBV
bml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQg
c3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBnZW5lcmF0b3IgaW1w
b3J0IEdlbmVyYXRvciwgdWNmaXJzdAorZnJvbSBnZW5lcmF0b3JfdGVtcGxhdGVzIGltcG9ydCBH
ZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCitmcm9tIG1vZGVscyBpbXBvcnQgQWxpYXNl
ZFR5cGUsIEFycmF5VHlwZSwgRW51bVR5cGUsIE9iamVjdFR5cGUKKworbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKEdlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1
dF9maWxlcGF0aCk6CisgICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5w
dXRfZmlsZXBhdGgpCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gIkluc3BlY3RvciVzUHJvdG9jb2xUeXBlcy5jcHAiICUgc2VsZi5tb2RlbCgpLmZyYW1l
d29yay5zZXR0aW5nKCdwcmVmaXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToK
KyAgICAgICAgZG9tYWlucyA9IHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpCisgICAgICAgIHNl
bGYuY2FsY3VsYXRlX3R5cGVzX3JlcXVpcmluZ19zaGFwZV9hc3NlcnRpb25zKGRvbWFpbnMpCisK
KyAgICAgICAgc2Vjb25kYXJ5X2hlYWRlcnMgPSBbJzx3dGYvdGV4dC9DU3RyaW5nLmg+J10KKwor
ICAgICAgICBoZWFkZXJfYXJncyA9IHsKKyAgICAgICAgICAgICdwcmltYXJ5SW5jbHVkZSc6ICci
SW5zcGVjdG9yJXNQcm90b2NvbFR5cGVzLmgiJyAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0
dGluZygncHJlZml4JyksCisgICAgICAgICAgICAnc2Vjb25kYXJ5SW5jbHVkZXMnOiAiXG4iLmpv
aW4oWycjaW5jbHVkZSAlcycgJSBoZWFkZXIgZm9yIGhlYWRlciBpbiBzZWNvbmRhcnlfaGVhZGVy
c10pLAorICAgICAgICAgICAgJ2lucHV0RmlsZW5hbWUnOiBzZWxmLl9pbnB1dF9maWxlcGF0aAor
ICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuQ3BwSW1wbGVtZW50YXRpb25QcmVsdWRlKS5zdWJzdGl0dXRlKE5vbmUs
ICoqaGVhZGVyX2FyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ25hbWVzcGFjZSBQcm90
b2NvbCB7JykKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2VudW1fbWFw
cGluZygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfb3Blbl9maWVs
ZF9uYW1lcygpKQorICAgICAgICBidWlsZGVyX3NlY3Rpb25zID0gbWFwKHNlbGYuX2dlbmVyYXRl
X2J1aWxkZXJzX2Zvcl9kb21haW4sIGRvbWFpbnMpCisgICAgICAgIHNlY3Rpb25zLmV4dGVuZChm
aWx0ZXIobGFtYmRhIHNlY3Rpb246IGxlbihzZWN0aW9uKSA+IDAsIGJ1aWxkZXJfc2VjdGlvbnMp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ30gLy8gbmFtZXNwYWNlIFByb3RvY29sJykKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBJbXBsZW1lbnRhdGlv
blBvc3RsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqaGVhZGVyX2FyZ3MpKQorCisgICAgICAgIHJl
dHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgICMgUHJpdmF0ZSBtZXRob2RzLgorCisg
ICAgZGVmIF9nZW5lcmF0ZV9lbnVtX21hcHBpbmcoc2VsZik6CisgICAgICAgIGZyYW1ld29ya19w
cmVmaXggPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpCisgICAgICAg
IGxpbmVzID0gW10KKworICAgICAgICBsaW5lcy5hcHBlbmQoJ3N0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0geycpCisgICAgICAgIGxpbmVzLmV4dGVuZChb
JyAgICAiJXMiLCcgJSBlbnVtX3ZhbHVlIGZvciBlbnVtX3ZhbHVlIGluIHNlbGYuYXNzaWduZWRf
ZW51bV92YWx1ZXMoKV0pCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfTsnKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnU3RyaW5nIGdldCVzRW51bUNvbnN0
YW50VmFsdWUoaW50IGNvZGUpIHsnICUgZnJhbWV3b3JrX3ByZWZpeCkKKyAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgcmV0dXJuIGVudW1fY29uc3RhbnRfdmFsdWVzW2NvZGVdOycpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnfScpCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKwor
ICAgIGRlZiBfZ2VuZXJhdGVfb3Blbl9maWVsZF9uYW1lcyhzZWxmKToKKyAgICAgICAgbGluZXMg
PSBbXQorICAgICAgICBmb3IgZG9tYWluIGluIHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpOgor
ICAgICAgICAgICAgZm9yIHR5cGVfZGVjbGFyYXRpb24gaW4gZmlsdGVyKGxhbWJkYSBkZWNsOiBH
ZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVsZHMoZGVjbC50eXBlKSwgZG9tYWluLnR5cGVfZGVj
bGFyYXRpb25zKToKKyAgICAgICAgICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gc29ydGVkKHR5
cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzLCBrZXk9bGFtYmRhIG1lbWJlcjogbWVtYmVyLm1l
bWJlcl9uYW1lKToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfbmFtZSA9ICc6Oicuam9pbihb
J0luc3BlY3RvcicsICdQcm90b2NvbCcsIGRvbWFpbi5kb21haW5fbmFtZSwgdWNmaXJzdCh0eXBl
X2RlY2xhcmF0aW9uLnR5cGVfbmFtZSksIHVjZmlyc3QodHlwZV9tZW1iZXIubWVtYmVyX25hbWUp
XSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdjb25zdCBjaGFyKiAlcyA9ICIl
cyI7JyAlIChmaWVsZF9uYW1lLCB0eXBlX21lbWJlci5tZW1iZXJfbmFtZSkpCisKKyAgICAgICAg
cmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfYnVpbGRlcnNfZm9y
X2RvbWFpbihzZWxmLCBkb21haW4pOgorICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIGRl
Y2xhcmF0aW9uc190b19nZW5lcmF0ZSA9IGZpbHRlcihsYW1iZGEgZGVjbDogc2VsZi50eXBlX25l
ZWRzX3NoYXBlX2Fzc2VydGlvbnMoZGVjbC50eXBlKSwgZG9tYWluLnR5cGVfZGVjbGFyYXRpb25z
KQorCisgICAgICAgIGZvciB0eXBlX2RlY2xhcmF0aW9uIGluIGRlY2xhcmF0aW9uc190b19nZW5l
cmF0ZToKKyAgICAgICAgICAgIGZvciB0eXBlX21lbWJlciBpbiB0eXBlX2RlY2xhcmF0aW9uLnR5
cGVfbWVtYmVyczoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5
cGUsIEVudW1UeXBlKToKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYu
X2dlbmVyYXRlX2Fzc2VydGlvbl9mb3JfZW51bSh0eXBlX21lbWJlciwgdHlwZV9kZWNsYXJhdGlv
bikpCisKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9kZWNsYXJhdGlvbi50eXBlLCBP
YmplY3RUeXBlKToKKyAgICAgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJh
dGVfYXNzZXJ0aW9uX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24odHlwZV9kZWNsYXJhdGlvbikpCisg
ICAgICAgICAgICAgICAgaWYgR2VuZXJhdG9yLnR5cGVfbmVlZHNfcnVudGltZV9jYXN0cyh0eXBl
X2RlY2xhcmF0aW9uLnR5cGUpOgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5fZ2VuZXJhdGVfcnVudGltZV9jYXN0X2Zvcl9vYmplY3RfZGVjbGFyYXRpb24odHlwZV9k
ZWNsYXJhdGlvbikpCisKKyAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNlY3Rpb25zKQorCisg
ICAgZGVmIF9nZW5lcmF0ZV9ydW50aW1lX2Nhc3RfZm9yX29iamVjdF9kZWNsYXJhdGlvbihzZWxm
LCBvYmplY3RfZGVjbGFyYXRpb24pOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ29i
amVjdFR5cGUnOiBHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGUob2JqZWN0
X2RlY2xhcmF0aW9uLnR5cGUpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFRlbXBsYXRlKFRl
bXBsYXRlcy5Qcm90b2NvbE9iamVjdFJ1bnRpbWVDYXN0KS5zdWJzdGl0dXRlKE5vbmUsICoqYXJn
cykKKworICAgIGRlZiBfZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24o
c2VsZiwgb2JqZWN0X2RlY2xhcmF0aW9uKToKKyAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZp
bHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCBvYmplY3RfZGVjbGFy
YXRpb24udHlwZV9tZW1iZXJzKQorICAgICAgICBvcHRpb25hbF9tZW1iZXJzID0gZmlsdGVyKGxh
bWJkYSBtZW1iZXI6IG1lbWJlci5pc19vcHRpb25hbCwgb2JqZWN0X2RlY2xhcmF0aW9uLnR5cGVf
bWVtYmVycykKKyAgICAgICAgc2hvdWxkX2NvdW50X3Byb3BlcnRpZXMgPSBub3QgR2VuZXJhdG9y
LnR5cGVfaGFzX29wZW5fZmllbGRzKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKQorICAgICAgICBs
aW5lcyA9IFtdCisKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxFRCcp
CisgICAgICAgIGxpbmVzLmFwcGVuZCgndm9pZCBCaW5kaW5nVHJhaXRzPCVzPjo6YXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpJyAlIChH
ZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGUob2JqZWN0X2RlY2xhcmF0aW9u
LnR5cGUpKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiInsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBvYmplY3Q7CisgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmpl
Y3QpOworICAgIEFTU0VSVF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7IiIiKQorICAgICAgICBm
b3IgdHlwZV9tZW1iZXIgaW4gcmVxdWlyZWRfbWVtYmVyczoKKyAgICAgICAgICAgIGFyZ3MgPSB7
CisgICAgICAgICAgICAgICAgJ21lbWJlck5hbWUnOiB0eXBlX21lbWJlci5tZW1iZXJfbmFtZSwK
KyAgICAgICAgICAgICAgICAnYXNzZXJ0TWV0aG9kJzogR2VuZXJhdG9yLmFzc2VydGlvbl9tZXRo
b2RfZm9yX3R5cGVfbWVtYmVyKHR5cGVfbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pCisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiIgICAgeworICAgICAgICBJ
bnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0LT5maW5k
KEFTQ0lJTGl0ZXJhbCgiJShtZW1iZXJOYW1lKXMiKSk7CisgICAgICAgIEFTU0VSVCglKG1lbWJl
ck5hbWUpc1BvcyAhPSBvYmplY3QtPmVuZCgpKTsKKyAgICAgICAgJShhc3NlcnRNZXRob2Qpcygl
KG1lbWJlck5hbWUpc1Bvcy0+dmFsdWUuZ2V0KCkpOworICAgIH0iIiIgJSBhcmdzKQorCisgICAg
ICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzOgorICAgICAgICAgICAgbGluZXMuYXBwZW5k
KCcnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaW50IGZvdW5kUHJvcGVydGllc0Nv
dW50ID0gJXM7JyAlIGxlbihyZXF1aXJlZF9tZW1iZXJzKSkKKworICAgICAgICBmb3IgdHlwZV9t
ZW1iZXIgaW4gb3B0aW9uYWxfbWVtYmVyczoKKyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAg
ICAgICAgICAgJ21lbWJlck5hbWUnOiB0eXBlX21lbWJlci5tZW1iZXJfbmFtZSwKKyAgICAgICAg
ICAgICAgICAnYXNzZXJ0TWV0aG9kJzogR2VuZXJhdG9yLmFzc2VydGlvbl9tZXRob2RfZm9yX3R5
cGVfbWVtYmVyKHR5cGVfbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pCisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiIgICAgeworICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yICUobWVtYmVyTmFtZSlzUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0
ZXJhbCgiJShtZW1iZXJOYW1lKXMiKSk7CisgICAgICAgIGlmICglKG1lbWJlck5hbWUpc1BvcyAh
PSBvYmplY3QtPmVuZCgpKSB7CisgICAgICAgICAgICAlKGFzc2VydE1ldGhvZClzKCUobWVtYmVy
TmFtZSlzUG9zLT52YWx1ZS5nZXQoKSk7IiIiICUgYXJncykKKworICAgICAgICAgICAgaWYgc2hv
dWxkX2NvdW50X3Byb3BlcnRpZXM6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
ICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50OycpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICAgICAgfScpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKKworICAg
ICAgICBpZiBzaG91bGRfY291bnRfcHJvcGVydGllczoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIGlmIChmb3VuZFByb3BlcnRpZXNDb3VudCAhPSBvYmplY3QtPnNpemUoKSknKQorICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRp
ZXMgaW4gb2JqZWN0OiAlc1xcbiIsIG9iamVjdC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCisgICAgICAgIGxpbmVzLmFwcGVuZCgn
I2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxp
bmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX2VudW0oc2VsZiwgZW51bV9t
ZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAg
bGluZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgndm9pZCAlcyhJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSknICUgR2VuZXJhdG9y
LmFzc2VydGlvbl9tZXRob2RfZm9yX3R5cGVfbWVtYmVyKGVudW1fbWVtYmVyLCBvYmplY3RfZGVj
bGFyYXRpb24pKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBTdHJpbmcgczsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBib29sIGNhc3Rf
cmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBB
U1NFUlQoY2FzdF9yZXMpOycpCisKKyAgICAgICAgYXNzZXJ0X2NvbmRpdGlvbiA9ICcgfHwgJy5q
b2luKFsncyA9PSAiJXMiJyAlIGVudW1fdmFsdWUgZm9yIGVudW1fdmFsdWUgaW4gZW51bV9tZW1i
ZXIudHlwZS5lbnVtX3ZhbHVlcygpXSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQVNTRVJU
KCVzKTsnICUgYXNzZXJ0X2NvbmRpdGlvbikKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCisKKyAgICAg
ICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFk
ZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3OWY2NzZmNmU1YjI4NTM0MWEzYjFhMmQ0NzAxNTgwYTI3ZTUxZmJkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNDYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jCi0jIENvcHlyaWdodCAoYykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWZyb20gc3RyaW5nIGlt
cG9ydCBUZW1wbGF0ZQotCi1mcm9tIGdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yLCB1Y2ZpcnN0
Ci1mcm9tIGdlbmVyYXRvcl90ZW1wbGF0ZXMgaW1wb3J0IEdlbmVyYXRvclRlbXBsYXRlcyBhcyBU
ZW1wbGF0ZXMKLWZyb20gbW9kZWxzIGltcG9ydCBFbnVtVHlwZSwgT2JqZWN0VHlwZSwgUHJpbWl0
aXZlVHlwZSwgQWxpYXNlZFR5cGUsIEFycmF5VHlwZSwgRnJhbWV3b3JrcwotCi1sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcignZ2xvYmFsJykKLQotCi1jbGFzcyBUeXBlQnVpbGRlckhlYWRlckdlbmVy
YXRvcihHZW5lcmF0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmls
ZXBhdGgpOgotICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2Zp
bGVwYXRoKQotCi0gICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJu
ICJJbnNwZWN0b3Ilc1R5cGVCdWlsZGVycy5oIiAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0
dGluZygncHJlZml4JykKLQotICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6Ci0gICAgICAg
IGRvbWFpbnMgPSBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKQotICAgICAgICBzZWxmLmNhbGN1
bGF0ZV90eXBlc19yZXF1aXJpbmdfc2hhcGVfYXNzZXJ0aW9ucyhkb21haW5zKQotCi0gICAgICAg
IGhlYWRlcnMgPSBzZXQoWwotICAgICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1
aWxkZXIuaD4nLAotICAgICAgICAgICAgJzx3dGYvQXNzZXJ0aW9ucy5oPicsCi0gICAgICAgICAg
ICAnPHd0Zi9QYXNzUmVmUHRyLmg+JwotICAgICAgICBdKQotCi0gICAgICAgIGlmIHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsgaXMgbm90IEZyYW1ld29ya3MuSmF2YVNjcmlwdENvcmU6Ci0gICAgICAg
ICAgICBoZWFkZXJzLmFkZCgnPGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPicp
Ci0KLSAgICAgICAgZXhwb3J0X21hY3JvID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5n
KCdleHBvcnRfbWFjcm8nLCBOb25lKQotICAgICAgICBmcmFtZXdvcmtfcHJlZml4ID0gc2VsZi5t
b2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKQotCi0gICAgICAgIGhlYWRlcl9hcmdz
ID0gewotICAgICAgICAgICAgJ2hlYWRlckd1YXJkU3RyaW5nJzogcmUuc3ViKCdcVysnLCAnXycs
IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkpLAotICAgICAgICAgICAgJ2luY2x1ZGVzJzogJ1xuJy5q
b2luKFsnI2luY2x1ZGUgJyArIGhlYWRlciBmb3IgaGVhZGVyIGluIHNvcnRlZChoZWFkZXJzKV0p
LAotICAgICAgICAgICAgJ3R5cGVkZWZzJzogJycsCi0gICAgICAgICAgICAnaW5wdXRGaWxlbmFt
ZSc6IHNlbGYuX2lucHV0X2ZpbGVwYXRoCi0gICAgICAgIH0KLQotICAgICAgICByZXR1cm5fdHlw
ZSA9ICdTdHJpbmcnCi0gICAgICAgIHJldHVybl90eXBlX3dpdGhfZXhwb3J0X21hY3JvID0gW3Jl
dHVybl90eXBlXQotICAgICAgICBpZiBleHBvcnRfbWFjcm8gaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICByZXR1cm5fdHlwZV93aXRoX2V4cG9ydF9tYWNyb1s6MF0gPSBbZXhwb3J0X21hY3JvXQot
Ci0gICAgICAgIHNlY3Rpb25zID0gW10KLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2Vu
ZXJhdGVfbGljZW5zZSgpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLkNwcEhlYWRlclByZWx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCi0g
ICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsnKQotICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoZG9t
YWlucykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV90eXBlZGVmcyhk
b21haW5zKSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCclcyBnZXQlc0VudW1Db25zdGFudFZh
bHVlKGludCBjb2RlKTsnICUgKCcgJy5qb2luKHJldHVybl90eXBlX3dpdGhfZXhwb3J0X21hY3Jv
KSwgZnJhbWV3b3JrX3ByZWZpeCkpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4o
WwotICAgICAgICAgICAgJ3RlbXBsYXRlPHR5cGVuYW1lIFQ+ICVzIGdldCVzRW51bUNvbnN0YW50
VmFsdWUoVCBlbnVtVmFsdWUpJyAlIChyZXR1cm5fdHlwZSwgZnJhbWV3b3JrX3ByZWZpeCksCi0g
ICAgICAgICAgICAneycsCi0gICAgICAgICAgICAnICAgIHJldHVybiBnZXQlc0VudW1Db25zdGFu
dFZhbHVlKHN0YXRpY19jYXN0PGludD4oZW51bVZhbHVlKSk7JyAlIGZyYW1ld29ya19wcmVmaXgs
Ci0gICAgICAgICAgICAnfSddKSkKLQotICAgICAgICBidWlsZGVyX3NlY3Rpb25zID0gbWFwKHNl
bGYuX2dlbmVyYXRlX2J1aWxkZXJzX2Zvcl9kb21haW4sIGRvbWFpbnMpCi0gICAgICAgIHNlY3Rp
b25zLmV4dGVuZChmaWx0ZXIobGFtYmRhIHNlY3Rpb246IGxlbihzZWN0aW9uKSA+IDAsIGJ1aWxk
ZXJfc2VjdGlvbnMpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfZm9y
d2FyZF9kZWNsYXJhdGlvbnNfZm9yX2JpbmRpbmdfdHJhaXRzKCkpCi0gICAgICAgIHNlY3Rpb25z
LmFwcGVuZCgnfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXInKQotICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNwcEhlYWRlclBvc3RsdWRlKS5zdWJzdGl0dXRlKE5v
bmUsICoqaGVhZGVyX2FyZ3MpKQotICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMp
Ci0KLSAgICAjIFByaXZhdGUgbWV0aG9kcy4KLQotICAgICMgRklYTUU6IG1vdmUgYnVpbGRlcnMg
b3V0IG9mIGNsYXNzZXMsIHVuY29tbWVudCBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLSAgICBkZWYg
X2dlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYsIGRvbWFpbnMpOgotICAgICAgICBz
ZWN0aW9ucyA9IFtdCi0KLSAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgotICAgICAgICAg
ICAgZGVjbGFyYXRpb25fdHlwZXMgPSBbZGVjbC50eXBlIGZvciBkZWNsIGluIGRvbWFpbi50eXBl
X2RlY2xhcmF0aW9uc10KLSAgICAgICAgICAgIG9iamVjdF90eXBlcyA9IGZpbHRlcihsYW1iZGEg
X3R5cGU6IGlzaW5zdGFuY2UoX3R5cGUsIE9iamVjdFR5cGUpLCBkZWNsYXJhdGlvbl90eXBlcykK
LSAgICAgICAgICAgIGVudW1fdHlwZXMgPSBmaWx0ZXIobGFtYmRhIF90eXBlOiBpc2luc3RhbmNl
KF90eXBlLCBFbnVtVHlwZSksIGRlY2xhcmF0aW9uX3R5cGVzKQotICAgICAgICAgICAgaWYgbGVu
KG9iamVjdF90eXBlcykgKyBsZW4oZW51bV90eXBlcykgPT0gMDoKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotCi0gICAgICAgICAgICBkb21haW5fbGluZXMgPSBbXQotICAgICAgICAgICAgZG9t
YWluX2xpbmVzLmFwcGVuZCgnbmFtZXNwYWNlICVzIHsnICUgZG9tYWluLmRvbWFpbl9uYW1lKQot
Ci0gICAgICAgICAgICBvYmplY3RfdHlwZV9uYW1lcyA9IFtfdHlwZS5yYXdfbmFtZSgpIGZvciBf
dHlwZSBpbiBvYmplY3RfdHlwZXNdCi0gICAgICAgICAgICBlbnVtX3R5cGVfbmFtZXMgPSBbX3R5
cGUucmF3X25hbWUoKSBmb3IgX3R5cGUgaW4gZW51bV90eXBlc10KLQotICAgICAgICAgICAgIyBG
b3J3YXJkLWRlY2xhcmUgYWxsIGNsYXNzZXMgc28gdGhlIHR5cGUgYnVpbGRlcnMgd29uJ3QgYnJl
YWsgaWYgcmVhcnJhbmdlZC4KLSAgICAgICAgICAgIGRvbWFpbl9saW5lcy5leHRlbmQoJ2NsYXNz
ICVzOycgJSBuYW1lIGZvciBuYW1lIGluIHNvcnRlZChvYmplY3RfdHlwZV9uYW1lcykpCi0gICAg
ICAgICAgICBkb21haW5fbGluZXMuZXh0ZW5kKCdlbnVtIGNsYXNzICVzOycgJSBuYW1lIGZvciBu
YW1lIGluIHNvcnRlZChlbnVtX3R5cGVfbmFtZXMpKQotICAgICAgICAgICAgZG9tYWluX2xpbmVz
LmFwcGVuZCgnfSAvLyAlcycgJSBkb21haW4uZG9tYWluX25hbWUpCi0gICAgICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoR2VuZXJhdG9yLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwg
J1xuJy5qb2luKGRvbWFpbl9saW5lcykpKQotCi0gICAgICAgIGlmIGxlbihzZWN0aW9ucykgPT0g
MDoKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0
dXJuICIiIi8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgotJXMKLS8vIEVuZCBvZiBmb3J3YXJkIGRl
Y2xhcmF0aW9ucy4KLSIiIiAlICdcblxuJy5qb2luKHNlY3Rpb25zKQotCi0gICAgZGVmIF9nZW5l
cmF0ZV90eXBlZGVmcyhzZWxmLCBkb21haW5zKToKLSAgICAgICAgc2VjdGlvbnMgPSBtYXAoc2Vs
Zi5fZ2VuZXJhdGVfdHlwZWRlZnNfZm9yX2RvbWFpbiwgZG9tYWlucykKLSAgICAgICAgc2VjdGlv
bnMgPSBmaWx0ZXIobGFtYmRhIHRleHQ6IGxlbih0ZXh0KSA+IDAsIHNlY3Rpb25zKQotCi0gICAg
ICAgIGlmIGxlbihzZWN0aW9ucykgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIiIi8vIFR5cGVkZWZzLgotJXMKLS8vIEVuZCBv
ZiB0eXBlZGVmcy4iIiIgJSAnXG5cbicuam9pbihzZWN0aW9ucykKLQotICAgIGRlZiBfZ2VuZXJh
dGVfdHlwZWRlZnNfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgotICAgICAgICBwcmltaXRpdmVf
ZGVjbGFyYXRpb25zID0gZmlsdGVyKGxhbWJkYSBkZWNsOiBpc2luc3RhbmNlKGRlY2wudHlwZSwg
QWxpYXNlZFR5cGUpLCBkb21haW4udHlwZV9kZWNsYXJhdGlvbnMpCi0gICAgICAgIGlmIGxlbihw
cmltaXRpdmVfZGVjbGFyYXRpb25zKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuICcnCi0KLSAg
ICAgICAgc2VjdGlvbnMgPSBbXQotICAgICAgICBmb3IgZGVjbGFyYXRpb24gaW4gcHJpbWl0aXZl
X2RlY2xhcmF0aW9uczoKLSAgICAgICAgICAgIHByaW1pdGl2ZV9uYW1lID0gR2VuZXJhdG9yLmNw
cF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlwZShkZWNsYXJhdGlvbi50eXBlLmFsaWFzZWRfdHlwZSkK
LSAgICAgICAgICAgIHR5cGVkZWZfbGluZXMgPSBbXQotICAgICAgICAgICAgaWYgbGVuKGRlY2xh
cmF0aW9uLmRlc2NyaXB0aW9uKSA+IDA6Ci0gICAgICAgICAgICAgICAgdHlwZWRlZl9saW5lcy5h
cHBlbmQoJy8qICVzICovJyAlIGRlY2xhcmF0aW9uLmRlc2NyaXB0aW9uKQotICAgICAgICAgICAg
dHlwZWRlZl9saW5lcy5hcHBlbmQoJ3R5cGVkZWYgJXMgJXM7JyAlIChwcmltaXRpdmVfbmFtZSwg
ZGVjbGFyYXRpb24udHlwZV9uYW1lKSkKLSAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4n
LmpvaW4odHlwZWRlZl9saW5lcykpCi0KLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsaW5l
cy5hcHBlbmQoJ25hbWVzcGFjZSAlcyB7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkKLSAgICAgICAg
bGluZXMuYXBwZW5kKCdcblxuJy5qb2luKHNlY3Rpb25zKSkKLSAgICAgICAgbGluZXMuYXBwZW5k
KCd9IC8vICVzJyAlIGRvbWFpbi5kb21haW5fbmFtZSkKLSAgICAgICAgcmV0dXJuIEdlbmVyYXRv
ci53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sICdcbicuam9pbihsaW5lcykpCi0K
LSAgICBkZWYgX2dlbmVyYXRlX2J1aWxkZXJzX2Zvcl9kb21haW4oc2VsZiwgZG9tYWluKToKLSAg
ICAgICAgc2VjdGlvbnMgPSBbXQotCi0gICAgICAgIGZvciB0eXBlX2RlY2xhcmF0aW9uIGluIGRv
bWFpbi50eXBlX2RlY2xhcmF0aW9uczoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9k
ZWNsYXJhdGlvbi50eXBlLCBFbnVtVHlwZSk6Ci0gICAgICAgICAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKHNlbGYuX2dlbmVyYXRlX3N0cnVjdF9mb3JfZW51bV9kZWNsYXJhdGlvbih0eXBlX2RlY2xh
cmF0aW9uKSkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh0eXBlX2RlY2xhcmF0aW9uLnR5
cGUsIE9iamVjdFR5cGUpOgotICAgICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9n
ZW5lcmF0ZV9jbGFzc19mb3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHR5cGVfZGVjbGFyYXRpb24sIGRv
bWFpbikpCi0KLSAgICAgICAgc2VjdGlvbnMgPSBmaWx0ZXIobGFtYmRhIHNlY3Rpb246IGxlbihz
ZWN0aW9uKSA+IDAsIHNlY3Rpb25zKQotICAgICAgICBpZiBsZW4oc2VjdGlvbnMpID09IDA6Ci0g
ICAgICAgICAgICByZXR1cm4gJycKLQotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxpbmVz
LmFwcGVuZCgnbmFtZXNwYWNlICVzIHsnICUgZG9tYWluLmRvbWFpbl9uYW1lKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJ1xuJy5qb2luKHNlY3Rpb25zKSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9
IC8vICVzJyAlIGRvbWFpbi5kb21haW5fbmFtZSkKLSAgICAgICAgcmV0dXJuIEdlbmVyYXRvci53
cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sICdcbicuam9pbihsaW5lcykpCi0KLSAg
ICBkZWYgX2dlbmVyYXRlX2NsYXNzX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24oc2VsZiwgdHlwZV9k
ZWNsYXJhdGlvbiwgZG9tYWluKToKLSAgICAgICAgaWYgbGVuKHR5cGVfZGVjbGFyYXRpb24udHlw
ZV9tZW1iZXJzKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuICcnCi0KLSAgICAgICAgZW51bV9t
ZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IGlzaW5zdGFuY2UobWVtYmVyLnR5cGUsIEVu
dW1UeXBlKSBhbmQgbWVtYmVyLnR5cGUuaXNfYW5vbnltb3VzLCB0eXBlX2RlY2xhcmF0aW9uLnR5
cGVfbWVtYmVycykKLSAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVt
YmVyOiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVy
cykKLSAgICAgICAgb3B0aW9uYWxfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBtZW1i
ZXIuaXNfb3B0aW9uYWwsIHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQotICAgICAgICBv
YmplY3RfbmFtZSA9IHR5cGVfZGVjbGFyYXRpb24udHlwZV9uYW1lCi0KLSAgICAgICAgbGluZXMg
PSBbXQotICAgICAgICBpZiBsZW4odHlwZV9kZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikgPiAwOgot
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSB0eXBlX2RlY2xhcmF0aW9uLmRl
c2NyaXB0aW9uKQotICAgICAgICBiYXNlX2NsYXNzID0gJ0luc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JwotICAgICAgICBpZiBub3QgR2VuZXJhdG9yLnR5cGVfaGFzX29wZW5fZmllbGRzKHR5cGVf
ZGVjbGFyYXRpb24udHlwZSk6Ci0gICAgICAgICAgICBiYXNlX2NsYXNzID0gYmFzZV9jbGFzcyAr
ICdCYXNlJwotICAgICAgICBsaW5lcy5hcHBlbmQoJ2NsYXNzICVzIDogcHVibGljICVzIHsnICUg
KG9iamVjdF9uYW1lLCBiYXNlX2NsYXNzKSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCdwdWJsaWM6
JykKLSAgICAgICAgZm9yIGVudW1fbWVtYmVyIGluIGVudW1fbWVtYmVyczoKLSAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIC8vIE5hbWVkIGFmdGVyIHByb3BlcnR5IG5hbWUgXCclc1wnIHdo
aWxlIGdlbmVyYXRpbmcgJXMuJyAlIChlbnVtX21lbWJlci5tZW1iZXJfbmFtZSwgb2JqZWN0X25h
bWUpKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX3N0cnVjdF9mb3Jf
YW5vbnltb3VzX2VudW1fbWVtYmVyKGVudW1fbWVtYmVyKSkKLSAgICAgICAgbGluZXMuYXBwZW5k
KHNlbGYuX2dlbmVyYXRlX2J1aWxkZXJfc3RhdGVfZW51bSh0eXBlX2RlY2xhcmF0aW9uKSkKLQot
ICAgICAgICBjb25zdHJ1Y3Rvcl9leGFtcGxlID0gW10KLSAgICAgICAgY29uc3RydWN0b3JfZXhh
bXBsZS5hcHBlbmQoJyAgICAgKiBSZWZQdHI8JXM+IHJlc3VsdCA9ICVzOjpjcmVhdGUoKScgJSAo
b2JqZWN0X25hbWUsIG9iamVjdF9uYW1lKSkKLSAgICAgICAgZm9yIG1lbWJlciBpbiByZXF1aXJl
ZF9tZW1iZXJzOgotICAgICAgICAgICAgY29uc3RydWN0b3JfZXhhbXBsZS5hcHBlbmQoJyAgICAg
KiAgICAgLnNldCVzKC4uLiknICUgdWNmaXJzdChtZW1iZXIubWVtYmVyX25hbWUpKQotCi0gICAg
ICAgIGJ1aWxkZXJfYXJncyA9IHsKLSAgICAgICAgICAgICdvYmplY3RUeXBlJzogb2JqZWN0X25h
bWUsCi0gICAgICAgICAgICAnY29uc3RydWN0b3JFeGFtcGxlJzogJ1xuJy5qb2luKGNvbnN0cnVj
dG9yX2V4YW1wbGUpICsgJzsnLAotICAgICAgICB9Ci0KLSAgICAgICAgbGluZXMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5UeXBlQnVpbGRlckRlY2xhcmF0aW9uUHJlbHVkZSkuc3Vic3RpdHV0
ZShOb25lLCAqKmJ1aWxkZXJfYXJncykpCi0gICAgICAgIGZvciB0eXBlX21lbWJlciBpbiByZXF1
aXJlZF9tZW1iZXJzOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2J1
aWxkZXJfc2V0dGVyX2Zvcl9tZW1iZXIodHlwZV9tZW1iZXIsIGRvbWFpbikpCi0gICAgICAgIGxp
bmVzLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuVHlwZUJ1aWxkZXJEZWNsYXJhdGlvblBvc3Rs
dWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqYnVpbGRlcl9hcmdzKSkKLSAgICAgICAgZm9yIG1lbWJl
ciBpbiBvcHRpb25hbF9tZW1iZXJzOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dl
bmVyYXRlX3VuY2hlY2tlZF9zZXR0ZXJfZm9yX21lbWJlcihtZW1iZXIsIGRvbWFpbikpCi0KLSAg
ICAgICAgaWYgR2VuZXJhdG9yLnR5cGVfaGFzX29wZW5fZmllbGRzKHR5cGVfZGVjbGFyYXRpb24u
dHlwZSk6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJycpCi0gICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAvLyBQcm9wZXJ0eSBuYW1lcyBmb3IgdHlwZSBnZW5lcmF0ZWQgYXMgb3Blbi4n
KQotICAgICAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHR5cGVfZGVjbGFyYXRpb24udHlwZV9t
ZW1iZXJzOgotICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdCBj
aGFyKiAlczsnICUgdWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJfbmFtZSkpCi0KLSAgICAgICAg
bGluZXMuYXBwZW5kKCd9OycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgcmV0
dXJuICdcbicuam9pbihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVt
X2RlY2xhcmF0aW9uKHNlbGYsIGVudW1fZGVjbGFyYXRpb24pOgotICAgICAgICBsaW5lcyA9IFtd
Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgZW51bV9kZWNsYXJhdGlvbi5kZXNj
cmlwdGlvbikKLSAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuX2dlbmVyYXRlX3N0cnVjdF9mb3Jf
ZW51bV90eXBlKGVudW1fZGVjbGFyYXRpb24udHlwZV9uYW1lLCBlbnVtX2RlY2xhcmF0aW9uLnR5
cGUpKQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0
ZV9zdHJ1Y3RfZm9yX2Fub255bW91c19lbnVtX21lbWJlcihzZWxmLCBlbnVtX21lbWJlcik6Ci0g
ICAgICAgIGRlZiBhcHBseV9pbmRlbnRhdGlvbihsaW5lKToKLSAgICAgICAgICAgIGlmIGxpbmUu
c3RhcnRzd2l0aCgoJyMnLCAnLyonLCAnKi8nLCAnLy8nKSkgb3IgbGVuKGxpbmUpIGlzIDA6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuICcgICAgJyArIGxpbmUKLQotICAgICAgICBpbmRlbnRlZF9saW5lcyA9IG1h
cChhcHBseV9pbmRlbnRhdGlvbiwgc2VsZi5fZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVtX3R5cGUo
ZW51bV9tZW1iZXIubWVtYmVyX25hbWUsIGVudW1fbWVtYmVyLnR5cGUpKQotICAgICAgICByZXR1
cm4gJ1xuJy5qb2luKGluZGVudGVkX2xpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9zdHJ1Y3Rf
Zm9yX2VudW1fdHlwZShzZWxmLCBlbnVtX25hbWUsIGVudW1fdHlwZSk6Ci0gICAgICAgIGxpbmVz
ID0gW10KLSAgICAgICAgZW51bV9uYW1lID0gdWNmaXJzdChlbnVtX25hbWUpCi0gICAgICAgIGxp
bmVzLmFwcGVuZCgnZW51bSBjbGFzcyAlcyB7JyAlIGVudW1fbmFtZSkKLSAgICAgICAgZm9yIGVu
dW1fdmFsdWUgaW4gZW51bV90eXBlLmVudW1fdmFsdWVzKCk6Ci0gICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAlcyA9ICVzLCcgJSAoR2VuZXJhdG9yLnN0eWxpemVkX25hbWVfZm9yX2VudW1f
dmFsdWUoZW51bV92YWx1ZSksIHNlbGYuZW5jb2RpbmdfZm9yX2VudW1fdmFsdWUoZW51bV92YWx1
ZSkpKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ307IC8vIGVudW0gY2xhc3MgJXMnICUgZW51bV9u
YW1lKQotICAgICAgICByZXR1cm4gbGluZXMgICMgVGhlIGNhbGxlciBtYXkgd2FudCB0byBhZGp1
c3QgaW5kZW50YXRpb24sIHNvIGRvbid0IGpvaW4gdGhlc2UgbGluZXMuCi0KLSAgICBkZWYgX2dl
bmVyYXRlX2J1aWxkZXJfc3RhdGVfZW51bShzZWxmLCB0eXBlX2RlY2xhcmF0aW9uKToKLSAgICAg
ICAgbGluZXMgPSBbXQotICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBt
ZW1iZXI6IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWwsIHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1i
ZXJzKQotICAgICAgICBlbnVtX3ZhbHVlcyA9IFtdCi0KLSAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgZW51bSB7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIE5vRmllbGRzU2V0ID0g
MCwnKQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocmVxdWlyZWRfbWVtYmVycykpOgotICAg
ICAgICAgICAgZW51bV92YWx1ZSA9ICIlc1NldCIgJSB1Y2ZpcnN0KHJlcXVpcmVkX21lbWJlcnNb
aV0ubWVtYmVyX25hbWUpCi0gICAgICAgICAgICBlbnVtX3ZhbHVlcy5hcHBlbmQoZW51bV92YWx1
ZSkKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAlcyA9IDEgPDwgJWQsJyAlIChl
bnVtX3ZhbHVlLCBpKSkKLSAgICAgICAgaWYgbGVuKGVudW1fdmFsdWVzKSA+IDA6Ci0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgQWxsRmllbGRzU2V0ID0gKCVzKScgJSAnIHwgJy5q
b2luKGVudW1fdmFsdWVzKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgICAgICBBbGxGaWVsZHNTZXQgPSAwJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
fTsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJycpCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4o
bGluZXMpCi0KLSAgICBkZWYgX2dlbmVyYXRlX2J1aWxkZXJfc2V0dGVyX2Zvcl9tZW1iZXIoc2Vs
ZiwgdHlwZV9tZW1iZXIsIGRvbWFpbik6Ci0gICAgICAgIHNldHRlcl9hcmdzID0gewotICAgICAg
ICAgICAgJ2NhbWVsTmFtZSc6IHVjZmlyc3QodHlwZV9tZW1iZXIubWVtYmVyX25hbWUpLAotICAg
ICAgICAgICAgJ2ZyYW1ld29ya1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGlu
ZygncHJlZml4JyksCi0gICAgICAgICAgICAna2V5ZWRTZXQnOiBHZW5lcmF0b3Iua2V5ZWRfc2V0
X21ldGhvZF9mb3JfdHlwZSh0eXBlX21lbWJlci50eXBlKSwKLSAgICAgICAgICAgICduYW1lJzog
dHlwZV9tZW1iZXIubWVtYmVyX25hbWUsCi0gICAgICAgICAgICAncGFyYW1ldGVyVHlwZSc6IEdl
bmVyYXRvci50eXBlX3N0cmluZ19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIpCi0gICAgICAg
IH0KLQotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCAlKGNhbWVsTmFtZSlzU2V0
PiYgc2V0JShjYW1lbE5hbWUpcyglKHBhcmFtZXRlclR5cGUpcyB2YWx1ZSknICUgc2V0dGVyX2Fy
Z3MpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICB7JykKLSAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgJShjYW1lbE5hbWUpc1Nl
dCksIHByb3BlcnR5XyUobmFtZSlzX2FscmVhZHlfc2V0KTsnICUgc2V0dGVyX2FyZ3MpCi0KLSAg
ICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX21lbWJlci50eXBlLCBFbnVtVHlwZSk6Ci0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIG1fcmVzdWx0LT4lKGtleWVkU2V0KXMoQVND
SUlMaXRlcmFsKCIlKG5hbWUpcyIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXQlKGZyYW1l
d29ya1ByZWZpeClzRW51bUNvbnN0YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpKTsn
ICUgc2V0dGVyX2FyZ3MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICAgICAgICAgIG1fcmVzdWx0LT4lKGtleWVkU2V0KXMoQVNDSUlMaXRlcmFsKCIlKG5hbWUp
cyIpLCB2YWx1ZSk7JyAlIHNldHRlcl9hcmdzKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAg
ICAgICAgIHJldHVybiBjYXN0U3RhdGU8JShjYW1lbE5hbWUpc1NldD4oKTsnICUgc2V0dGVyX2Fy
Z3MpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICB9JykKLSAgICAgICAgcmV0dXJuICdc
bicuam9pbihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVfdW5jaGVja2VkX3NldHRlcl9mb3Jf
bWVtYmVyKHNlbGYsIHR5cGVfbWVtYmVyLCBkb21haW4pOgotICAgICAgICBzZXR0ZXJfYXJncyA9
IHsKLSAgICAgICAgICAgICdjYW1lbE5hbWUnOiB1Y2ZpcnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9u
YW1lKSwKLSAgICAgICAgICAgICdmcmFtZXdvcmtQcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLnNldHRpbmcoJ3ByZWZpeCcpLAotICAgICAgICAgICAgJ2tleWVkU2V0JzogR2VuZXJhdG9y
LmtleWVkX3NldF9tZXRob2RfZm9yX3R5cGUodHlwZV9tZW1iZXIudHlwZSksCi0gICAgICAgICAg
ICAnbmFtZSc6IHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lLAotICAgICAgICAgICAgJ3BhcmFtZXRl
clR5cGUnOiBHZW5lcmF0b3IudHlwZV9zdHJpbmdfZm9yX3R5cGVfbWVtYmVyKHR5cGVfbWVtYmVy
KQotICAgICAgICB9Ci0KLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsaW5lcy5hcHBlbmQo
JycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHZvaWQgc2V0JShjYW1lbE5hbWUpcyglKHBh
cmFtZXRlclR5cGUpcyB2YWx1ZSknICUgc2V0dGVyX2FyZ3MpCi0gICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIHsnKQotICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5cGUsIEVudW1U
eXBlKToKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBJbnNwZWN0b3JPYmplY3RC
YXNlOjolKGtleWVkU2V0KXMoQVNDSUlMaXRlcmFsKCIlKG5hbWUpcyIpLCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpnZXQlKGZyYW1ld29ya1ByZWZpeClzRW51bUNvbnN0YW50VmFsdWUoc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZSkpKTsnICUgc2V0dGVyX2FyZ3MpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6JShrZXll
ZFNldClzKEFTQ0lJTGl0ZXJhbCgiJShuYW1lKXMiKSwgdmFsdWUpOycgJSBzZXR0ZXJfYXJncykK
LSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgfScpCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4o
bGluZXMpCi0KLSAgICBkZWYgX2dlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9iaW5k
aW5nX3RyYWl0cyhzZWxmKToKLSAgICAgICAgIyBBIGxpc3Qgb2YgKGJ1aWxkZXJfdHlwZSwgbmVl
ZHNfcnVudGltZV9jYXN0KQotICAgICAgICB0eXBlX2FyZ3VtZW50cyA9IFtdCi0KLSAgICAgICAg
Zm9yIGRvbWFpbiBpbiBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKToKLSAgICAgICAgICAgIGRl
Y2xhcmF0aW9uc190b19nZW5lcmF0ZSA9IGZpbHRlcihsYW1iZGEgZGVjbDogc2VsZi50eXBlX25l
ZWRzX3NoYXBlX2Fzc2VydGlvbnMoZGVjbC50eXBlKSwgZG9tYWluLnR5cGVfZGVjbGFyYXRpb25z
KQotCi0gICAgICAgICAgICBmb3IgdHlwZV9kZWNsYXJhdGlvbiBpbiBkZWNsYXJhdGlvbnNfdG9f
Z2VuZXJhdGU6Ci0gICAgICAgICAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHR5cGVfZGVjbGFy
YXRpb24udHlwZV9tZW1iZXJzOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5
cGVfbWVtYmVyLnR5cGUsIEVudW1UeXBlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVf
YXJndW1lbnRzLmFwcGVuZCgoR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGVf
bWVtYmVyKHR5cGVfbWVtYmVyLCB0eXBlX2RlY2xhcmF0aW9uKSwgRmFsc2UpKQotCi0gICAgICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX2RlY2xhcmF0aW9uLnR5cGUsIE9iamVjdFR5cGUp
OgotICAgICAgICAgICAgICAgICAgICB0eXBlX2FyZ3VtZW50cy5hcHBlbmQoKEdlbmVyYXRvci50
eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKHR5cGVfZGVjbGFyYXRpb24udHlwZSksIEdlbmVy
YXRvci50eXBlX25lZWRzX3J1bnRpbWVfY2FzdHModHlwZV9kZWNsYXJhdGlvbi50eXBlKSkpCi0K
LSAgICAgICAgc3RydWN0X2tleXdvcmRzID0gWydzdHJ1Y3QnXQotICAgICAgICBmdW5jdGlvbl9r
ZXl3b3JkcyA9IFsnc3RhdGljIHZvaWQnXQotICAgICAgICBleHBvcnRfbWFjcm8gPSBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ2V4cG9ydF9tYWNybycsIE5vbmUpCi0gICAgICAgIGlm
IGV4cG9ydF9tYWNybyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN0cnVjdF9rZXl3b3Jkcy5h
cHBlbmQoZXhwb3J0X21hY3JvKQotICAgICAgICAgICAgI2Z1bmN0aW9uX2tleXdvcmRzWzE6MV0g
PSBbZXhwb3J0X21hY3JvXQotCi0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgZm9yIGFyZ3Vt
ZW50IGluIHR5cGVfYXJndW1lbnRzOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd0ZW1wbGF0
ZTw+ICVzIEJpbmRpbmdUcmFpdHM8JXM+IHsnICUgKCcgJy5qb2luKHN0cnVjdF9rZXl3b3Jkcyks
IGFyZ3VtZW50WzBdKSkKLSAgICAgICAgICAgIGlmIGFyZ3VtZW50WzFdOgotICAgICAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnc3RhdGljIFBhc3NSZWZQdHI8JXM+IHJ1bnRpbWVDYXN0KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpOycgJSBhcmd1bWVudFswXSkK
LSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnI2lmICFBU1NFUlRfRElTQUJMRUQnKQotICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCclcyBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlKik7JyAlICcgJy5qb2luKGZ1bmN0aW9uX2tleXdvcmRzKSkKLSAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQotICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCd9OycpCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obGlu
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1
aWxkZXJfaW1wbGVtZW50YXRpb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2
OTJhYThhYjkzYzExMTZkMDhkMWQ4ZmIyZWVhOGZiZTMwYjQxMDEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9u
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhv
bgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0j
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHN0cmluZwotZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBs
YXRlCi0KLWZyb20gZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIHVjZmlyc3QKLWZyb20gZ2Vu
ZXJhdG9yX3RlbXBsYXRlcyBpbXBvcnQgR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcwot
ZnJvbSBtb2RlbHMgaW1wb3J0IEFsaWFzZWRUeXBlLCBBcnJheVR5cGUsIEVudW1UeXBlLCBPYmpl
Y3RUeXBlCi0KLWxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQotCi0KLWNsYXNzIFR5
cGVCdWlsZGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKToKLSAgICAgICAgR2VuZXJhdG9yLl9f
aW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKLQotICAgIGRlZiBvdXRwdXRfZmls
ZW5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAiSW5zcGVjdG9yJXNUeXBlQnVpbGRlcnMuY3Bw
IiAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4JykKLQotICAgIGRlZiBn
ZW5lcmF0ZV9vdXRwdXQoc2VsZik6Ci0gICAgICAgIGRvbWFpbnMgPSBzZWxmLmRvbWFpbnNfdG9f
Z2VuZXJhdGUoKQotICAgICAgICBzZWxmLmNhbGN1bGF0ZV90eXBlc19yZXF1aXJpbmdfc2hhcGVf
YXNzZXJ0aW9ucyhkb21haW5zKQotCi0gICAgICAgIHNlY29uZGFyeV9oZWFkZXJzID0gWyc8d3Rm
L3RleHQvQ1N0cmluZy5oPiddCi0KLSAgICAgICAgaGVhZGVyX2FyZ3MgPSB7Ci0gICAgICAgICAg
ICAncHJpbWFyeUluY2x1ZGUnOiAnIkluc3BlY3RvciVzVHlwZUJ1aWxkZXJzLmgiJyAlIHNlbGYu
bW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4JyksCi0gICAgICAgICAgICAnc2Vjb25k
YXJ5SW5jbHVkZXMnOiAiXG4iLmpvaW4oWycjaW5jbHVkZSAlcycgJSBoZWFkZXIgZm9yIGhlYWRl
ciBpbiBzZWNvbmRhcnlfaGVhZGVyc10pLAotICAgICAgICAgICAgJ2lucHV0RmlsZW5hbWUnOiBz
ZWxmLl9pbnB1dF9maWxlcGF0aAotICAgICAgICB9Ci0KLSAgICAgICAgc2VjdGlvbnMgPSBbXQot
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCi0gICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ3BwSW1wbGVtZW50YXRpb25QcmVs
dWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqaGVhZGVyX2FyZ3MpKQotICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoJ25hbWVzcGFjZSBUeXBlQnVpbGRlciB7JykKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuX2dlbmVyYXRlX2VudW1fbWFwcGluZygpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5fZ2VuZXJhdGVfb3Blbl9maWVsZF9uYW1lcygpKQotICAgICAgICBidWlsZGVyX3NlY3Rp
b25zID0gbWFwKHNlbGYuX2dlbmVyYXRlX2J1aWxkZXJzX2Zvcl9kb21haW4sIGRvbWFpbnMpCi0g
ICAgICAgIHNlY3Rpb25zLmV4dGVuZChmaWx0ZXIobGFtYmRhIHNlY3Rpb246IGxlbihzZWN0aW9u
KSA+IDAsIGJ1aWxkZXJfc2VjdGlvbnMpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ30gLy8g
bmFtZXNwYWNlIFR5cGVCdWlsZGVyJykKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5DcHBJbXBsZW1lbnRhdGlvblBvc3RsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoq
aGVhZGVyX2FyZ3MpKQotCi0gICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKLQot
ICAgICMgUHJpdmF0ZSBtZXRob2RzLgotCi0gICAgZGVmIF9nZW5lcmF0ZV9lbnVtX21hcHBpbmco
c2VsZik6Ci0gICAgICAgIGZyYW1ld29ya19wcmVmaXggPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3Jr
LnNldHRpbmcoJ3ByZWZpeCcpCi0gICAgICAgIGxpbmVzID0gW10KLQotICAgICAgICBsaW5lcy5h
cHBlbmQoJ3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0g
eycpCi0gICAgICAgIGxpbmVzLmV4dGVuZChbJyAgICAiJXMiLCcgJSBlbnVtX3ZhbHVlIGZvciBl
bnVtX3ZhbHVlIGluIHNlbGYuYXNzaWduZWRfZW51bV92YWx1ZXMoKV0pCi0gICAgICAgIGxpbmVz
LmFwcGVuZCgnfTsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJycpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnU3RyaW5nIGdldCVzRW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsnICUgZnJhbWV3
b3JrX3ByZWZpeCkKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIGVudW1fY29uc3Rh
bnRfdmFsdWVzW2NvZGVdOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCi0KLSAgICAgICAg
cmV0dXJuICdcbicuam9pbihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVfb3Blbl9maWVsZF9u
YW1lcyhzZWxmKToKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBmb3IgZG9tYWluIGluIHNl
bGYuZG9tYWluc190b19nZW5lcmF0ZSgpOgotICAgICAgICAgICAgZm9yIHR5cGVfZGVjbGFyYXRp
b24gaW4gZmlsdGVyKGxhbWJkYSBkZWNsOiBHZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVsZHMo
ZGVjbC50eXBlKSwgZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zKToKLSAgICAgICAgICAgICAgICBm
b3IgdHlwZV9tZW1iZXIgaW4gc29ydGVkKHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzLCBr
ZXk9bGFtYmRhIG1lbWJlcjogbWVtYmVyLm1lbWJlcl9uYW1lKToKLSAgICAgICAgICAgICAgICAg
ICAgZmllbGRfbmFtZSA9ICc6Oicuam9pbihbJ0luc3BlY3RvcicsICdUeXBlQnVpbGRlcicsIGRv
bWFpbi5kb21haW5fbmFtZSwgdWNmaXJzdCh0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbmFtZSksIHVj
Zmlyc3QodHlwZV9tZW1iZXIubWVtYmVyX25hbWUpXSkKLSAgICAgICAgICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCdjb25zdCBjaGFyKiAlcyA9ICIlcyI7JyAlIChmaWVsZF9uYW1lLCB0eXBlX21l
bWJlci5tZW1iZXJfbmFtZSkpCi0KLSAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKLQot
ICAgIGRlZiBfZ2VuZXJhdGVfYnVpbGRlcnNfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgotICAg
ICAgICBzZWN0aW9ucyA9IFtdCi0gICAgICAgIGRlY2xhcmF0aW9uc190b19nZW5lcmF0ZSA9IGZp
bHRlcihsYW1iZGEgZGVjbDogc2VsZi50eXBlX25lZWRzX3NoYXBlX2Fzc2VydGlvbnMoZGVjbC50
eXBlKSwgZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zKQotCi0gICAgICAgIGZvciB0eXBlX2RlY2xh
cmF0aW9uIGluIGRlY2xhcmF0aW9uc190b19nZW5lcmF0ZToKLSAgICAgICAgICAgIGZvciB0eXBl
X21lbWJlciBpbiB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVyczoKLSAgICAgICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5cGUsIEVudW1UeXBlKToKLSAgICAgICAgICAg
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2Fzc2VydGlvbl9mb3JfZW51
bSh0eXBlX21lbWJlciwgdHlwZV9kZWNsYXJhdGlvbikpCi0KLSAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UodHlwZV9kZWNsYXJhdGlvbi50eXBlLCBPYmplY3RUeXBlKToKLSAgICAgICAgICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9vYmplY3RfZGVj
bGFyYXRpb24odHlwZV9kZWNsYXJhdGlvbikpCi0gICAgICAgICAgICAgICAgaWYgR2VuZXJhdG9y
LnR5cGVfbmVlZHNfcnVudGltZV9jYXN0cyh0eXBlX2RlY2xhcmF0aW9uLnR5cGUpOgotICAgICAg
ICAgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfcnVudGltZV9jYXN0
X2Zvcl9vYmplY3RfZGVjbGFyYXRpb24odHlwZV9kZWNsYXJhdGlvbikpCi0KLSAgICAgICAgcmV0
dXJuICdcblxuJy5qb2luKHNlY3Rpb25zKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9ydW50aW1lX2Nh
c3RfZm9yX29iamVjdF9kZWNsYXJhdGlvbihzZWxmLCBvYmplY3RfZGVjbGFyYXRpb24pOgotICAg
ICAgICBhcmdzID0gewotICAgICAgICAgICAgJ29iamVjdFR5cGUnOiBHZW5lcmF0b3IudHlwZV9i
dWlsZGVyX3N0cmluZ19mb3JfdHlwZShvYmplY3RfZGVjbGFyYXRpb24udHlwZSkKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gVGVtcGxhdGUoVGVtcGxhdGVzLlR5cGVCdWlsZGVyT2JqZWN0UnVu
dGltZUNhc3QpLnN1YnN0aXR1dGUoTm9uZSwgKiphcmdzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9h
c3NlcnRpb25fZm9yX29iamVjdF9kZWNsYXJhdGlvbihzZWxmLCBvYmplY3RfZGVjbGFyYXRpb24p
OgotICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IG5vdCBt
ZW1iZXIuaXNfb3B0aW9uYWwsIG9iamVjdF9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCi0gICAg
ICAgIG9wdGlvbmFsX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbWVtYmVyLmlzX29w
dGlvbmFsLCBvYmplY3RfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQotICAgICAgICBzaG91bGRf
Y291bnRfcHJvcGVydGllcyA9IG5vdCBHZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVsZHMob2Jq
ZWN0X2RlY2xhcmF0aW9uLnR5cGUpCi0gICAgICAgIGxpbmVzID0gW10KLQotICAgICAgICBsaW5l
cy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJU0FCTEVEJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCd2
b2lkIEJpbmRpbmdUcmFpdHM8JXM+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSknICUgKEdlbmVyYXRvci50eXBlX2J1aWxkZXJfc3Ry
aW5nX2Zvcl90eXBlKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKSkpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgiIiJ7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0OwotICAgIGJvb2wg
Y2FzdFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTsKLSAgICBBU1NFUlRfVU5VU0VEKGNh
c3RSZXMsIGNhc3RSZXMpOyIiIikKLSAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHJlcXVpcmVk
X21lbWJlcnM6Ci0gICAgICAgICAgICBhcmdzID0gewotICAgICAgICAgICAgICAgICdtZW1iZXJO
YW1lJzogdHlwZV9tZW1iZXIubWVtYmVyX25hbWUsCi0gICAgICAgICAgICAgICAgJ2Fzc2VydE1l
dGhvZCc6IEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlcih0eXBlX21l
bWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBs
aW5lcy5hcHBlbmQoIiIiICAgIHsKLSAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciAl
KG1lbWJlck5hbWUpc1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFt
ZSlzIikpOwotICAgICAgICBBU1NFUlQoJShtZW1iZXJOYW1lKXNQb3MgIT0gb2JqZWN0LT5lbmQo
KSk7Ci0gICAgICAgICUoYXNzZXJ0TWV0aG9kKXMoJShtZW1iZXJOYW1lKXNQb3MtPnZhbHVlLmdl
dCgpKTsKLSAgICB9IiIiICUgYXJncykKLQotICAgICAgICBpZiBzaG91bGRfY291bnRfcHJvcGVy
dGllczoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9ICVzOycgJSBsZW4ocmVxdWlyZWRf
bWVtYmVycykpCi0KLSAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIG9wdGlvbmFsX21lbWJlcnM6
Ci0gICAgICAgICAgICBhcmdzID0gewotICAgICAgICAgICAgICAgICdtZW1iZXJOYW1lJzogdHlw
ZV9tZW1iZXIubWVtYmVyX25hbWUsCi0gICAgICAgICAgICAgICAgJ2Fzc2VydE1ldGhvZCc6IEdl
bmVyYXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlciwgb2Jq
ZWN0X2RlY2xhcmF0aW9uKQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBsaW5lcy5hcHBl
bmQoIiIiICAgIHsKLSAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciAlKG1lbWJlck5h
bWUpc1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlzIikpOwot
ICAgICAgICBpZiAoJShtZW1iZXJOYW1lKXNQb3MgIT0gb2JqZWN0LT5lbmQoKSkgewotICAgICAg
ICAgICAgJShhc3NlcnRNZXRob2QpcyglKG1lbWJlck5hbWUpc1Bvcy0+dmFsdWUuZ2V0KCkpOyIi
IiAlIGFyZ3MpCi0KLSAgICAgICAgICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzOgotICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXND
b3VudDsnKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIH0nKQotICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgfScpCi0KLSAgICAgICAgaWYgc2hvdWxkX2NvdW50X3Byb3Bl
cnRpZXM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoZm91bmRQcm9wZXJ0aWVz
Q291bnQgIT0gb2JqZWN0LT5zaXplKCkpJykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
ICAgICBGQVRBTCgiVW5leHBlY3RlZCBwcm9wZXJ0aWVzIGluIG9iamVjdDogJXNcXG4iLCBvYmpl
Y3QtPnRvSlNPTlN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsnKQotICAgICAgICBsaW5lcy5hcHBl
bmQoJ30nKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
JykKLSAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVf
YXNzZXJ0aW9uX2Zvcl9lbnVtKHNlbGYsIGVudW1fbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24p
OgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnI2lmICFBU1NFUlRf
RElTQUJMRUQnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJXMoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZSogdmFsdWUpJyAlIEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBl
X21lbWJlcihlbnVtX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKSkKLSAgICAgICAgbGluZXMu
YXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgU3RyaW5nIHM7JykKLSAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7
JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQVNTRVJUKGNhc3RfcmVzKTsnKQotCi0gICAg
ICAgIGFzc2VydF9jb25kaXRpb24gPSAnIHx8ICcuam9pbihbJ3MgPT0gIiVzIicgJSBlbnVtX3Zh
bHVlIGZvciBlbnVtX3ZhbHVlIGluIGVudW1fbWVtYmVyLnR5cGUuZW51bV92YWx1ZXMoKV0pCi0g
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVCglcyk7JyAlIGFzc2VydF9jb25kaXRpb24p
Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQnKQotCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0b3IucHkKaW5kZXggYzYzZWZhYjQ5ZjNiZmE3MmU3ZDIzZTRhMTVk
NDZjMzAxYzRjMGVhYS4uZWFhYTMzN2YwODJjN2MzN2UwZWUxNGM5ZGFmNzdhYTZiOWJlODU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQpAQCAtMjY3LDIyICsyNjcsMjIgQEAgY2xhc3MgR2Vu
ZXJhdG9yOgogCiAgICAgIyBHZW5lcmF0ZSB0eXBlIHJlcHJlc2VudGF0aW9ucyBmb3IgdmFyaW91
cyBzaXR1YXRpb25zLgogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdHlwZV9idWlsZGVyX3N0
cmluZ19mb3JfdHlwZShfdHlwZSk6CisgICAgZGVmIHByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90
eXBlKF90eXBlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgT2JqZWN0VHlwZSkgYW5k
IGxlbihfdHlwZS5tZW1iZXJzKSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCcKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9iamVjdFR5
cGUsIEFsaWFzZWRUeXBlLCBFbnVtVHlwZSkpOgotICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjolczo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25h
bWUsIF90eXBlLnJhd19uYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6UHJv
dG9jb2w6OiVzOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUu
cmF3X25hbWUoKSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBlKToKLSAg
ICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8JXM+JyAlIEdl
bmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlLmVsZW1lbnRfdHlwZSkK
KyAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8JXM+JyAlIEdl
bmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUp
CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAg
ICAgcmV0dXJuIEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAK
ICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGVf
bWVtYmVyKHR5cGVfbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pOgorICAgIGRlZiBwcm90b2Nv
bF90eXBlX3N0cmluZ19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJh
dGlvbik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9tZW1iZXIudHlwZSwgRW51bVR5cGUp
IGFuZCB0eXBlX21lbWJlci50eXBlLmlzX2Fub255bW91czoKLSAgICAgICAgICAgIHJldHVybiAn
OjonLmpvaW4oW0dlbmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKG9iamVjdF9k
ZWNsYXJhdGlvbi50eXBlKSwgdWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJfbmFtZSldKQorICAg
ICAgICAgICAgcmV0dXJuICc6Oicuam9pbihbR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5n
X2Zvcl90eXBlKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKSwgdWNmaXJzdCh0eXBlX21lbWJlci5t
ZW1iZXJfbmFtZSldKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIEdlbmVyYXRv
ci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKHR5cGVfbWVtYmVyLnR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlKHR5cGVf
bWVtYmVyLnR5cGUpCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHR5cGVfc3RyaW5nX2Zv
cl91bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcihwYXJhbWV0ZXIpOgpAQCAtMzIxLDkgKzMy
MSw5IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHR5cGVf
c3RyaW5nX2Zvcl90eXBlX3dpdGhfbmFtZShfdHlwZSwgdHlwZV9uYW1lLCBpc19vcHRpb25hbCk6
CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIChBcnJheVR5cGUsIE9iamVjdFR5cGUpKToK
LSAgICAgICAgICAgIHJldHVybiAnUGFzc1JlZlB0cjwlcz4nICUgR2VuZXJhdG9yLnR5cGVfYnVp
bGRlcl9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpCisgICAgICAgICAgICByZXR1cm4gJ1Bhc3NSZWZQ
dHI8JXM+JyAlIEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShfdHlwZSkK
ICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpOgotICAgICAgICAgICAg
YnVpbGRlcl90eXBlID0gR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUoX3R5
cGUpCisgICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9z
dHJpbmdfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBpc19vcHRpb25hbDoKICAgICAg
ICAgICAgICAgICByZXR1cm4gJ2NvbnN0ICVzKiBjb25zdCcgJSBidWlsZGVyX3R5cGUKICAgICAg
ICAgICAgIGVsaWYgX3R5cGUuYWxpYXNlZF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4gWydpbnRl
Z2VyJywgJ251bWJlciddOgpAQCAtMzQ4LDcgKzM0OCw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAg
ICAgICAgICAgIGlmIF90eXBlLmlzX2Fub255bW91czoKICAgICAgICAgICAgICAgICBlbnVtX3R5
cGVfbmFtZSA9IHVjZmlyc3QodHlwZV9uYW1lKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBlbnVtX3R5cGVfbmFtZSA9ICdJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjolczo6JXMn
ICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIF90eXBlLnJhd19uYW1lKCkpCisg
ICAgICAgICAgICAgICAgZW51bV90eXBlX25hbWUgPSAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6
OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgp
KQogCiAgICAgICAgICAgICBpZiBpc19vcHRpb25hbDoKICAgICAgICAgICAgICAgICByZXR1cm4g
JyVzKicgJSBlbnVtX3R5cGVfbmFtZQpAQCAtMzYzLDE4ICszNjMsMTggQEAgY2xhc3MgR2VuZXJh
dG9yOgogICAgICAgICAgICAgX3R5cGUgPSBfdHlwZS5hbGlhc2VkX3R5cGUgICMgRmFsbCB0aHJv
dWdoLgogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIChPYmplY3RUeXBlLCBBcnJheVR5
cGUpKToKLSAgICAgICAgICAgIHJldHVybiAnUmVmUHRyPCVzPiYnICUgR2VuZXJhdG9yLnR5cGVf
YnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpCisgICAgICAgICAgICByZXR1cm4gJ1JlZlB0
cjwlcz4mJyAlIEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShfdHlwZSkK
ICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAgICAgICAgICAg
ICBjcHBfbmFtZSA9IEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUp
CiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBfbmFt
ZQorICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PCVzPioiICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0
dXJuICclcyonICUgY3BwX25hbWUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5
cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUuaXNfYW5vbnltb3VzOgogICAgICAgICAgICAgICAg
IHJldHVybiAnSW5zcGVjdG9yJXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiVzKicgJSAoX3R5
cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgdWNmaXJzdChwYXJhbWV0ZXIucGFyYW1ldGVy
X25hbWUpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ0luc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OiVzOjolcyonICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWlu
X25hbWUsIF90eXBlLnJhd19uYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0
b3I6OlByb3RvY29sOjolczo6JXMqJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1l
LCBfdHlwZS5yYXdfbmFtZSgpKQogCiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24g
Zm9ybWFsIG91dCBwYXJhbWV0ZXIgdHlwZS4iKQogCkBAIC0zODksMTEgKzM4OSwxMSBAQCBjbGFz
cyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBfdHlwZSA9IF90eXBlLnByaW1pdGl2ZV90eXBlICAj
IEZhbGwgdGhyb3VnaC4KIAogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCAoT2JqZWN0VHlw
ZSwgQXJyYXlUeXBlKSk6Ci0gICAgICAgICAgICByZXR1cm4gJ1Bhc3NSZWZQdHI8JXM+JyAlIEdl
bmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQorICAgICAgICAgICAg
cmV0dXJuICdQYXNzUmVmUHRyPCVzPicgJSBHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdf
Zm9yX3R5cGUoX3R5cGUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5
cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1p
dGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgot
ICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0
PCVzPioiICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDwlcz4qIiAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbGlmIF90eXBl
LnF1YWxpZmllZF9uYW1lKCkgaW4gWydpbnRlZ2VyJywgJ251bWJlciddOgogICAgICAgICAgICAg
ICAgIHJldHVybiBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQog
ICAgICAgICAgICAgZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnc3RyaW5nJ106CkBA
IC00MjUsNyArNDI1LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgaWYgX3R5cGUu
cXVhbGlmaWVkX25hbWUoKSBpbiBbJ2FueScsICdvYmplY3QnXToKICAgICAgICAgICAgICAgICBy
ZXR1cm4gIlJlZlB0cjwlcz4iICUgR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlw
ZShfdHlwZSkKICAgICAgICAgICAgIGVsaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsIGFuZCBfdHlw
ZS5xdWFsaWZpZWRfbmFtZSgpIG5vdCBpbiBbJ2Jvb2xlYW4nLCAnc3RyaW5nJywgJ2ludGVnZXIn
XToKLSAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91
dHB1dDwlcz4iICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gIkluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDwlcz4iICUgY3BwX25hbWUKICAgICAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNwcF9uYW1lCiAKQEAgLTQzMywzNCArNDMzLDM0IEBAIGNs
YXNzIEdlbmVyYXRvcjoKICAgICBkZWYgdHlwZV9zdHJpbmdfZm9yX3N0YWNrX291dF9wYXJhbWV0
ZXIocGFyYW1ldGVyKToKICAgICAgICAgX3R5cGUgPSBwYXJhbWV0ZXIudHlwZQogICAgICAgICBp
ZiBpc2luc3RhbmNlKF90eXBlLCAoQXJyYXlUeXBlLCBPYmplY3RUeXBlKSk6Ci0gICAgICAgICAg
ICByZXR1cm4gJ1JlZlB0cjwlcz4nICUgR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9y
X3R5cGUoX3R5cGUpCisgICAgICAgICAgICByZXR1cm4gJ1JlZlB0cjwlcz4nICUgR2VuZXJhdG9y
LnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQogICAgICAgICBpZiBpc2luc3Rh
bmNlKF90eXBlLCBBbGlhc2VkVHlwZSk6Ci0gICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBHZW5l
cmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19mb3JfdHlwZShfdHlwZSkKKyAgICAgICAgICAgIGJ1
aWxkZXJfdHlwZSA9IEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShfdHlw
ZSkKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gIkluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDwlcz4iICUgYnVpbGRl
cl90eXBlCisgICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8JXM+IiAlIGJ1aWxkZXJfdHlwZQogICAgICAgICAgICAgcmV0dXJuICclcycgJSBidWls
ZGVyX3R5cGUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgUHJpbWl0aXZlVHlwZSk6CiAg
ICAgICAgICAgICBjcHBfbmFtZSA9IEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5
cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+IiAl
IGNwcF9uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8JXM+IiAlIGNwcF9uYW1lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgIHJldHVybiBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlw
ZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5pc19hbm9ueW1vdXM6CiAgICAgICAgICAgICAgICAg
cmV0dXJuICdJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JXMnICUgKF90eXBl
LnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVyLnBhcmFtZXRlcl9u
YW1lKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjolczo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25h
bWUsIF90eXBlLnJhd19uYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6
OlByb3RvY29sOjolczo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIF90
eXBlLnJhd19uYW1lKCkpCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGFzc2VydGlvbl9t
ZXRob2RfZm9yX3R5cGVfbWVtYmVyKHR5cGVfbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pOgog
CiAgICAgICAgIGRlZiBhc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlKF90eXBlKToKLSAgICAgICAg
ICAgIHJldHVybiAnQmluZGluZ1RyYWl0czwlcz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBl
JyAlIEdlbmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQorICAgICAg
ICAgICAgcmV0dXJuICdCaW5kaW5nVHJhaXRzPCVzPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUnICUgR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQogCiAg
ICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9tZW1iZXIudHlwZSwgQWxpYXNlZFR5cGUpOgogICAg
ICAgICAgICAgcmV0dXJuIGFzc2VydGlvbl9tZXRob2RfZm9yX3R5cGUodHlwZV9tZW1iZXIudHlw
ZS5hbGlhc2VkX3R5cGUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9tZW1iZXIudHlwZSwg
RW51bVR5cGUpIGFuZCB0eXBlX21lbWJlci50eXBlLmlzX2Fub255bW91czoKLSAgICAgICAgICAg
IHJldHVybiAnQmluZGluZ1RyYWl0czwlcz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlJyAl
IEdlbmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJl
ciwgb2JqZWN0X2RlY2xhcmF0aW9uKQorICAgICAgICAgICAgcmV0dXJuICdCaW5kaW5nVHJhaXRz
PCVzPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUnICUgR2VuZXJhdG9yLnByb3RvY29sX3R5
cGVfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9u
KQogCiAgICAgICAgIHJldHVybiBhc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlKHR5cGVfbWVtYmVy
LnR5cGUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4
IGY5ZjBmMzc1MWNiYTkyZWVkZjM5YTJiNjM5NTNmN2RjYjgxZDcwNzguLjYxNDg1MjUyMmEzZTE1
NTBjN2IwODhhZDQzYTk0NDk2ODc2Nzk0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weQpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIH07IiIiKQog
Ci0gICAgVHlwZUJ1aWxkZXJEZWNsYXJhdGlvblByZWx1ZGUgPSAoCisgICAgUHJvdG9jb2xPYmpl
Y3RCdWlsZGVyRGVjbGFyYXRpb25QcmVsdWRlID0gKAogIiIiICAgIHRlbXBsYXRlPGludCBTVEFU
RT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgpAQCAtMjI1LDcgKzIyNSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyAke29iamVjdFR5cGV9OwogICAgIHB1Ymxp
YzoiIiIpCiAKLSAgICBUeXBlQnVpbGRlckRlY2xhcmF0aW9uUG9zdGx1ZGUgPSAoCisgICAgUHJv
dG9jb2xPYmplY3RCdWlsZGVyRGVjbGFyYXRpb25Qb3N0bHVkZSA9ICgKICIiIgogICAgICAgICBv
cGVyYXRvciBSZWZQdHI8JHtvYmplY3RUeXBlfT4mICgpCiAgICAgICAgIHsKQEAgLTI0OCw5ICsy
NDgsOSBAQCAke2NvbnN0cnVjdG9yRXhhbXBsZX0KICAgICB7CiAgICAgICAgIHJldHVybiBCdWls
ZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwog
ICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFp
dHMgSXRlbVRyYWl0czsiIiIpCisgICAgdHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpTdHJ1
Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7IiIiKQogCi0gICAgVHlwZUJ1aWxkZXJPYmplY3RSdW50
aW1lQ2FzdCA9ICgKKyAgICBQcm90b2NvbE9iamVjdFJ1bnRpbWVDYXN0ID0gKAogIiIiUGFzc1Jl
ZlB0cjwke29iamVjdFR5cGV9PiBCaW5kaW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+OjpydW50aW1l
Q2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogewogICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rv
ci1wcm90b2NvbC1iaW5kaW5ncy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKaW5kZXggMmZk
NmRmYmU3M2RhM2ZlNGYyZTFhNGMzZDFlYWI0NTVkODc4Y2U2Yi4uODA4OTBiZTRmYzU1ODU1MjZh
ZTkwMjg5MjkxNTUyNjU1MDRiZTBjNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CkBAIC01NSw4ICs1NSw4IEBAIGV4Y2VwdCBJ
bXBvcnRFcnJvcjoKICAgICBmcm9tIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1l
bnRhdGlvbiBpbXBvcnQgKgogICAgIGZyb20gZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9o
ZWFkZXIgaW1wb3J0ICoKICAgICBmcm9tIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24gaW1wb3J0ICoKLSAgICBmcm9tIGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFk
ZXIgaW1wb3J0ICoKLSAgICBmcm9tIGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlv
biBpbXBvcnQgKgorICAgIGZyb20gZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyIGltcG9y
dCAqCisgICAgZnJvbSBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbiBpbXBv
cnQgKgogCiAKIGxvZ2dpbmcuYmFzaWNDb25maWcoZm9ybWF0PSclKGxldmVsbmFtZSlzOiAlKG1l
c3NhZ2UpcycsIGxldmVsPWxvZ2dpbmcuRVJST1IpCkBAIC0xMjMsOCArMTIzLDggQEAgZGVmIGdl
bmVyYXRlX2Zyb21fc3BlY2lmaWNhdGlvbihwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGg9
Tm9uZSwKICAgICBnZW5lcmF0b3JzLmFwcGVuZChCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0
aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQog
ICAgIGdlbmVyYXRvcnMuYXBwZW5kKEZyb250ZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihw
cm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICBnZW5lcmF0b3Jz
LmFwcGVuZChGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2Nv
bCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKLSAgICBnZW5lcmF0b3JzLmFwcGVu
ZChUeXBlQnVpbGRlckhlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0
aW9uX2ZpbGVwYXRoKSkKLSAgICBnZW5lcmF0b3JzLmFwcGVuZChUeXBlQnVpbGRlckltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgp
KQorICAgIGdlbmVyYXRvcnMuYXBwZW5kKFByb3RvY29sVHlwZXNIZWFkZXJHZW5lcmF0b3IocHJv
dG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCisgICAgZ2VuZXJhdG9ycy5h
cHBlbmQoUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmlt
YXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogCiAgICAgc2luZ2xlX291dHB1dF9maWxlX2Nv
bnRlbnRzID0gW10KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4
IGEwOTQyYzM3Yjg2YTNkNGFhZGE5Nzg2OWM3NWZhNDQwMTIxODk2NzMuLjMxYWYxNDMzMTQ2NjQw
YmE1NWVkYjdjNTE4N2U1NzdmNmNiMWZlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5j
LWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUu
anNvbi1yZXN1bHQKQEAgLTc0LDcgKzc0LDcgQEAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNv
bW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVTUUxBc3luYyIsIFt7Im5hbWUiOiAiZGF0YWJhc2UKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxk
ZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTksMTgg
Kzk5LDE4IEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93ID0gNSwKICAgICAgICAgQmxhY2sgPSA2
LAogICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xvcgotICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nKiwgaW50IGluX2RhdGFi
YXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0
X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29s
b3IsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9y
KiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyosIGludCBpbl9kYXRhYmFzZUlkLCBj
b25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIG9wdF9v
dXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRf
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4m
IG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5
Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7CiAgICAg
Y2xhc3MgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayA6IHB1Ymxp
YyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2Ugewog
ICAgIHB1YmxpYzoKICAgICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXND
YWxsYmFjayhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
LCBpbnQgaWQpOwotICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBheWxv
YWQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJy
b3IsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xv
ciwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3Ip
OworICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJs
ZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PFN0cmluZz4qIHByaW50Q29sb3IpOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nKiwgaW50IGluX2RhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFBhc3NSZWZQdHI8RXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjaz4gY2FsbGJhY2spID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcqLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3Qg
U3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90
aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJv
ciwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9z
Y3JlZW5Db2xvciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVT
UUxTeW5jKEVycm9yU3RyaW5nKiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5f
cXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2Nv
bHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRD
b2xvcikgPSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrIDogcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAg
cHVibGljOgogICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+LCBpbnQgaWQpOwotICAgICAgICB2b2lk
IHNlbmRTdWNjZXNzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNv
bG9yLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpOworICAgICAgICB2b2lkIHNlbmRTdWNjZXNz
KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFt
ZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBwYXlsb2FkLCBp
bnQgZGF0YWJhc2VJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcm
IHByaW50Q29sb3IpOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luYyhF
cnJvclN0cmluZyosIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBQ
YXNzUmVmUHRyPEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrPiBjYWxsYmFjaykgPSAwOwogcHJvdGVj
dGVkOgpAQCAtMjMyLDE0ICsyMzIsMTQgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKIAogICAg
IEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKLSAgICBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfbm90ZXM7Ci0gICAgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKLSAgICBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG91
dF92YWx1ZXM7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU+IG91dF9wYXlsb2FkOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2VJ
ZD4gb3V0X2RhdGFiYXNlSWQ7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRh
dGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOworICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+IG91dF9ub3RlczsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBvdXRfdGltZXN0YW1wOworICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
b3V0X3ZhbHVlczsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZT4gb3V0X3BheWxvYWQ7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZUlkPiBvdXRf
ZGF0YWJhc2VJZDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiBvdXRfc3FsRXJyb3I7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlBy
aW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwogICAgIG1fYWdl
bnQtPmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoJmVycm9yLCBpbl9kYXRhYmFz
ZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFt
cCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJv
ciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENvbG9yKTsKIApAQCAtMjY4LDcgKzI2OCw3
IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nCiAKIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxi
YWNrOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQp
IDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKGJh
Y2tlbmREaXNwYXRjaGVyLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2Fs
bGJhY2s6OnNlbmRTdWNjZXNzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1
dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGRvdWJs
ZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRP
dXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBheWxvYWQsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpCit2b2lkIEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxk
b3VibGU+KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBpZiAoY29sdW1u
TmFtZXMpCkBAIC0zMzQsMTQgKzMzNCwxNCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZQogCiAg
ICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7CiAgICAgU3Ry
aW5nIG91dF9ub3RlczsKICAgICBkb3VibGUgb3V0X3RpbWVzdGFtcDsKICAgICBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCBvdXRfdmFsdWVzOwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUgb3V0X3BheWxvYWQ7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRh
dGFiYXNlSWQgb3V0X2RhdGFiYXNlSWQ7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJy
b3I7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0
X3NjcmVlbkNvbG9yOwogICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxT
eW5jKCZlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1lcywgJm91
dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9k
YXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsICZvdXRfcHJpbnRDb2xv
cik7CiAKQEAgLTM1MywxNSArMzUzLDE1IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAg
ICAgIHJlc3VsdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG91dF9wYXlsb2Fk
KTsKICAgICAgICAgcmVzdWx0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiks
IG91dF9kYXRhYmFzZUlkKTsKICAgICAgICAgcmVzdWx0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFs
KCJzcWxFcnJvciIpLCBvdXRfc3FsRXJyb3IpOwotICAgICAgICByZXN1bHQtPnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldFRl
c3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfc2NyZWVuQ29sb3IpKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfcHJpbnRDb2xvcikpOworICAgICAgICBy
ZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfc2NyZWVuQ29sb3IpKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShvdXRfcHJpbnRDb2xvcikp
OwogICAgIH0KICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBy
ZXN1bHQucmVsZWFzZSgpLCBlcnJvcik7CiB9CiAKIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5j
Q2FsbGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gYmFja2VuZERp
c3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2UoYmFja2VuZERpc3BhdGNoZXIsIGlkKSB7IH0KIAotdm9pZCBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJh
Y2s6OnNlbmRTdWNjZXNzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3Rh
bXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVl
bkNvbG9yLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lkIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1
Y2Nlc3MoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIHBheWxv
YWQsIGludCBkYXRhYmFzZUlkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIGNvbnN0IFN0
cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVz
c2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldEFy
cmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgY29sdW1uTmFtZXMpOwpAQCAtMzcxLDgg
KzM3MSw4IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpzZW5kU3VjCiAgICAganNvbk1lc3NhZ2UtPnNldFZh
bHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBwYXlsb2FkKTsKICAgICBqc29uTWVzc2FnZS0+
c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBkYXRhYmFzZUlkKTsKICAgICBq
c29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgc3FsRXJyb3Ip
OwotICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIp
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoc2NyZWVu
Q29sb3IpKTsKLSAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRD
b2xvciIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUo
cHJpbnRDb2xvcikpOworICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJz
Y3JlZW5Db2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50VmFs
dWUoc2NyZWVuQ29sb3IpKTsKKyAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgicHJpbnRDb2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50
VmFsdWUocHJpbnRDb2xvcikpOwogICAgIHNlbmRJZkFjdGl2ZShqc29uTWVzc2FnZSwgRXJyb3JT
dHJpbmcoKSk7CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5z
cAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBl
QnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
QEAgLTUwOCw3ICs1MDgsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MzksMTMgKzUzOSwxMyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVyc19oCi0jZGVmaW5lIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAor
I2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCisjZGVmaW5lIEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNQ
cm90b2NvbFR5cGVzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlw
ZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAKQEAgLTU1Myw3ICs1NTMsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAK
LW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiAvLyBGb3J3
YXJkIGRlY2xhcmF0aW9ucy4KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpAQCAtNjU0LDcgKzY1
NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0
PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAgICB0eXBl
ZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsK
KyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRy
YWl0czsKIH07CiAKIH0gLy8gRGF0YWJhc2UKQEAgLTY2MiwxNiArNjYyLDE2IEBAIHB1YmxpYzoK
IAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2Nv
bAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1IpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gpCi0j
IyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3Rv
clRlc3RQcm90b2NvbFR5cGVzLmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBl
QnVpbGRlcnMuY3BwCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMu
Y3BwCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgpAQCAtNzAzLDcgKzcwMyw3IEBAIHB1YmxpYzoKIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJv
dG9jb2xUeXBlcy5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtNzExLDcgKzcxMSw3
IEBAIHB1YmxpYzoKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLW5hbWVzcGFjZSBUeXBlQnVp
bGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
ZW51bV9jb25zdGFudF92YWx1ZXNbXSA9IHsKICAgICAicmVkIiwKQEAgLTcyOSwxMCArNzI5LDEw
IEBAIFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogCiAKLX0g
Ly8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSMj
IyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCBjZGZiMzVm
OGZlNmIzMTFmMDI2ZDEyZjg3NGIxZjgyODUwNDgwZjViLi44ODgyZjM4OGUyYjExOTY3MzJlMDg0
NTY5N2ZkZjQwZWVhODkzNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTcxLDcgKzcxLDcgQEAgSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyIsIFt7Im5hbWUKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFBy
b3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtOTYsOCArOTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9
IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IK
LSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiogaW5fY29sdW1uTmFt
ZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBpbl92YWx1ZXMsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0
YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogaW5fc3Fs
RXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogaW5fcHJp
bnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiBv
cHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGRv
dWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRw
dXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRf
b3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxpbnQ+KiBvcHRf
b3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6
RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JT
dHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGluX2NvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl92YWx1ZXMsIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGluX3NxbEVycm9yLCBjb25zdCBTdHJp
bmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBT
dHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3Bh
eWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBpbl9jb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3Rh
bXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGluX3ZhbHVlcywg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBp
bl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBp
bl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nKiBp
bl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4m
IG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJp
bmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91Ymxl
Piogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIG9wdF9vdXRfcGF5bG9h
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRf
c3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBv
cHRfb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmlu
ZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mIGluX3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBp
bl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3Is
IGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3Vi
bGUqIG91dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVz
LCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJh
c2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9z
cWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91
dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CkBAIC0y
MDYsNyArMjA2LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbEkKICAgICBib29sIG5vdGVzX3Zh
bHVlRm91bmQgPSBmYWxzZTsKICAgICBTdHJpbmcgaW5fbm90ZXMgPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJu
b3RlcyIpLCAmbm90ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnNQdHIpOwogICAgIGJvb2wg
dGltZXN0YW1wX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0TnVtYmVyKHBhcmFtc0NvbnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJ0aW1lc3Rh
bXAiKSwgJnRpbWVzdGFtcF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9yc1B0cik7CisgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gaW5fdGltZXN0YW1wID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE51bWJlcihwYXJhbXNDb250YWluZXJQdHIsIEFTQ0lJ
TGl0ZXJhbCgidGltZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJv
cnNQdHIpOwogICAgIGJvb2wgdmFsdWVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3ZhbHVlcyA9IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInZh
bHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBib29s
IHBheWxvYWRfdmFsdWVGb3VuZCA9IGZhbHNlOwpAQCAtMjI3LDE0ICsyMjcsMTQgQEAgdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzKGxvbmcgY2FsbEkKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5O
YW1lczsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRf
bm90ZXM7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0
X3RpbWVzdGFtcDsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+IG91dF92YWx1ZXM7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG91dF9wYXlsb2FkOwot
ICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2VJZD4gb3V0X2RhdGFiYXNlSWQ7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwotICAg
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3Jl
ZW5Db2xvcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4g
b3V0X2NvbHVtbk5hbWVzOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJp
bmc+IG91dF9ub3RlczsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91Ymxl
PiBvdXRfdGltZXN0YW1wOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gb3V0X3ZhbHVlczsKKyAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb3V0X3BheWxvYWQ7Cisg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpEYXRhYmFzZUlkPiBvdXRfZGF0YWJhc2VJZDsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAg
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91
dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMo
JmVycm9yLCBjb2x1bW5OYW1lc192YWx1ZUZvdW5kID8gJmluX2NvbHVtbk5hbWVzIDogbnVsbHB0
ciwgbm90ZXNfdmFsdWVGb3VuZCA/ICZpbl9ub3RlcyA6IG51bGxwdHIsIHRpbWVzdGFtcF92YWx1
ZUZvdW5kID8gJmluX3RpbWVzdGFtcCA6IG51bGxwdHIsIHZhbHVlc192YWx1ZUZvdW5kID8gJmlu
X3ZhbHVlcyA6IG51bGxwdHIsIHBheWxvYWRfdmFsdWVGb3VuZCA/ICZpbl9wYXlsb2FkIDogbnVs
bHB0ciwgZGF0YWJhc2VJZF92YWx1ZUZvdW5kID8gJmluX2RhdGFiYXNlSWQgOiBudWxscHRyLCBz
cWxFcnJvcl92YWx1ZUZvdW5kID8gJmluX3NxbEVycm9yIDogbnVsbHB0ciwgc2NyZWVuQ29sb3Jf
dmFsdWVGb3VuZCA/ICZpbl9zY3JlZW5Db2xvciA6IG51bGxwdHIsIHByaW50Q29sb3JfdmFsdWVG
b3VuZCA/ICZpbl9wcmludENvbG9yIDogbnVsbHB0ciwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25v
dGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFi
YXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENvbG9yKTsK
IApAQCAtMjg0LDE0ICsyODQsMTQgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQKIAogICAgIEVy
cm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gb3V0X2NvbHVtbk5hbWVzOwogICAgIFN0cmluZyBv
dXRfbm90ZXM7CiAgICAgZG91YmxlIG91dF90aW1lc3RhbXA7CiAgICAgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Qgb3V0X3ZhbHVlczsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIG91
dF9wYXlsb2FkOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFz
ZUlkIG91dF9kYXRhYmFzZUlkOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
YXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkRhdGFiYXNlSWQgb3V0X2RhdGFiYXNlSWQ7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwor
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3Jl
ZW5Db2xvcjsKICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBtX2FnZW50LT5leGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMoJmVycm9yLCBpbl9jb2x1bW5OYW1lcywgaW5fbm90ZXMsIGluX3RpbWVzdGFt
cCwgaW5fdmFsdWVzLCBpbl9wYXlsb2FkLCBpbl9kYXRhYmFzZUlkLCBpbl9zcWxFcnJvciwgaW5f
c2NyZWVuQ29sb3IsIGluX3ByaW50Q29sb3IsIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3Rlcywg
Jm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFzZUlk
LCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsICZvdXRfcHJpbnRDb2xvcik7CiAKQEAg
LTMwMyw4ICszMDMsOCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZAogICAgICAgICByZXN1bHQt
PnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5bG9hZCk7CiAgICAgICAg
IHJlc3VsdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJh
c2VJZCk7CiAgICAgICAgIHJlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3Ii
KSwgb3V0X3NxbEVycm9yKTsKLSAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzY3JlZW5Db2xvciIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0RW51bUNvbnN0
YW50VmFsdWUob3V0X3NjcmVlbkNvbG9yKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0
RW51bUNvbnN0YW50VmFsdWUob3V0X3ByaW50Q29sb3IpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpn
ZXRUZXN0RW51bUNvbnN0YW50VmFsdWUob3V0X3NjcmVlbkNvbG9yKSk7CisgICAgICAgIHJlc3Vs
dC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUob3V0X3ByaW50Q29sb3IpKTsKICAgICB9CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0LnJlbGVh
c2UoKSwgZXJyb3IpOwogfQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2Fs
bElkCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5
cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgpAQCAtNDE1LDcgKzQxNSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjIyMgRW5kIEZp
bGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogCi0jIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTQ0NiwxMyArNDQ2LDEzIEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAK
LSNpZm5kZWYgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCi0jZGVmaW5lIEluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCisj
ZGVmaW5lIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaD4KLSNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclByb3RvY29sVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogCiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJv
dG9jb2wgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQpAQCAtNTYxLDcgKzU2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBC
dWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkp
OwogICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1U
cmFpdHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVj
dEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKIH07CiAKIH0gLy8gRGF0YWJhc2UKQEAgLTU2OSwxNiAr
NTY5LDE2IEBAIHB1YmxpYzoKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8v
IG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0
VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMu
aAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gpCisjIyMg
RW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIAotIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXMuY3BwCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjEwLDcgKzYxMCw3IEBAIHB1YmxpYzoK
IC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IApAQCAtNjE4LDcgKzYxOCw3IEBAIHB1YmxpYzoKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFudF92YWx1ZXNbXSA9IHsKICAgICAicmVkIiwK
QEAgLTYzNiwxMCArNjM2LDEwIEBAIFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoaW50
IGNvZGUpIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFj
ZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5j
cHAKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IDQ2MjhhN2Y5Yzhk
Y2Q5YTg1ZWJkOWJlZWZmZmQ5MmJhYTA4NGE1NzYuLmE3ZWE3OGI0MjFjMWMyOGMwNGFmMmM4ZTFj
MWYwZWE1MzgwY2M5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpz
b24tcmVzdWx0CkBAIC03OCw3ICs3OCw3IEBAIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21t
YW5kKCJOZXR3b3JrMy5sb2FkUmVzb3VyY2U3IiwgW10sIFtdKTsKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyhsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90
b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDMyLDcgKzQzMiw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAog
Ci0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4g
RmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTQ2MywxMyArNDYz
LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGRvbWFpbnMtd2l0aC12YXJ5aW5nLWNv
bW1hbmQtc2l6ZXMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmluZSBJbnNwZWN0
b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNf
aAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+
Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC00NzcsNyArNDc3LDcgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNl
IFByb3RvY29sIHsKIAogCiAKQEAgLTQ5NywxNiArNDk3LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoVCBlbnVtVmFsdWUpCiAKIAogCi19
IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0j
ZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oKQotIyMjIEVuZCBG
aWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNw
ZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJv
dG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJz
LmNwcAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTUzOCw3ICs1MzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgZ2V0VGVz
dEVudW1Db25zdGFudFZhbHVlKFQgZW51bVZhbHVlKQogLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC01NDYsNyArNTQ2LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShUIGVudW1W
YWx1ZSkKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7
CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZW51bV9j
b25zdGFudF92YWx1ZXNbXSA9IHsKIH07CkBAIC01NTcsMTAgKzU1NywxMCBAQCBTdHJpbmcgZ2V0
VGVzdEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBU
eXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6IElu
c3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQ
cm90b2NvbFR5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAppbmRleCA5OGVhYzZiMWI5ZWY0NWFmYzJjZWFkNmFjYWU2Nzc2MzU4MTFlMGFmLi5lYjE2ZTRk
OTZmMzBiM2FlN2RkOGE0YTY0ODgyNzFmMWU0ZDVlOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgt
b3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwt
cGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtNzEsNyArNzEsNyBAQCBJbnNwZWN0b3JCYWNrZW5k
LnJlZ2lzdGVyRXZlbnQoIkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIs
IFsiY29sdQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5o
IgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC0xNzMsNyArMTczLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTg3LDggKzE4Nyw4
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXIgewogcHVibGljOgogICAgIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkg
eyB9Ci0gICAgdm9pZCBkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29sb3IsIGNvbnN0
IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcik7Ci0gICAgdm9pZCBkaWRFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBjb25z
dCBTdHJpbmcmIHByaW50Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1l
dGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRp
bWVzdGFtcCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIGNvbnN0IHNjcmVlbkNv
bG9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29sb3IpOworICAgIHZvaWQgZGlkRXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1l
c3RhbXAsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgY29u
c3QgU3RyaW5nJiBwcmludENvbG9yKTsKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIH07CkBAIC0yNDIsNyArMjQyLDcg
QEAgcHJpdmF0ZToKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1
dGVPcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29u
c3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlcywgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBw
YXlsb2FkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJv
cj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENv
bG9yKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0
ZU9wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBk
b3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gdmFsdWVzLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxv
YWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxF
cnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMq
IGNvbnN0IHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29sb3IpCiB7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRo
b2QiKSwgQVNDSUlMaXRlcmFsKCJEYXRhYmFzZS5kaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJz
IikpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERp
c3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZlB0CiAgICAgbV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2Fn
ZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3Ry
aW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gdmFsdWVzLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
IHBheWxvYWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVy
cm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlBy
aW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lk
IEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcm
IHByaW50Q29sb3IpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2Ug
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVNDSUlMaXRlcmFsKCJEYXRhYmFzZS5kaWRFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnMiKSk7CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBJbnNwZWN0
b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzKFBhc3NSZWYKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNwYXRj
aGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAor
IyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0z
MjQsMTMgKzMyNCwxMyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
OjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZgogLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGV2ZW50cy13aXRo
LW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmlu
ZSBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3Rv
Y29sVHlwZXNfaAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1
aWxkZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC0zMzgsNyArMzM4LDcg
QEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgewor
bmFtZXNwYWNlIFByb3RvY29sIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CisgICAgdHlwZWRlZiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CiB9OwogCiB9IC8vIERhdGFiYXNl
CkBAIC00NDIsMTYgKzQ0MiwxNiBAQCBwdWJsaWM6CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBl
QnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQo
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0
VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xU
eXBlc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMj
IyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZp
bGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTQ4Myw3ICs0ODMs
NyBAQCBwdWJsaWM6CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJz
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAKQEAgLTQ5MSw3ICs0OTEsNyBAQCBwdWJsaWM6CiAKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29s
IHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7
CiB9OwpAQCAtNTAyLDEwICs1MDIsMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1
ZShpbnQgY29kZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFt
ZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxk
ZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5
cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAppbmRleCBjOGEwZDVlOGE5M2FhNWU3
ZTMwMDA0YmYzOThlNGNlZTQ0OGM2NDlhLi41NDIxNTU0NjhhZmZjMzA0YzFlZWM1MTc5NDU2NmJj
ZWY5NjY0NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CkBAIC02
Niw3ICs2Niw3IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTE2OCw3ICsxNjgsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0yMzEsNyAr
MjMxLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9y
VGVzdEZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JU
ZXN0VHlwZUJ1aWxkZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xU
eXBlcy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtMjYyLDEzICsyNjIsMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbgogLy8gYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3Bl
Y3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBlQnVp
bGRlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5z
cGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xU
eXBlc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5
cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBl
cy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBA
IC0yNzYsNyArMjc2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3BhY2Ug
VHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogCiAKQEAgLTMwMSwxNiArMzAx
LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFs
dWUoVCBlbnVtVmFsdWUpCiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBu
YW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFR5
cGVCdWlsZGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oKQorIyMjIEVu
ZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBJ
bnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTM0Miw3ICszNDIsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKFQgZW51bVZhbHVlKQog
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
CkBAIC0zNTAsNyArMzUwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIGdldFRlc3RF
bnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSkKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFudF92YWx1ZXNbXSA9IHsKIH07CkBAIC0zNjEs
MTAgKzM2MSwxMCBAQCBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7
CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9j
b2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQogCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMg
RW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRv
d2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10
eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggZDFhZTRlODBiNDJjOTU4NzYwMjQwZWQ2ZDdk
NWVhZGVkOWFlMTFmOC4uZDlkYjEzZjlhZWFmMTczNWYzZjFhZDZhOTIyMmI2NjU1YzNiNmE0NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
c2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC02Niw3ICs2Niw3
IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5
cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTE2OCw3ICsxNjgsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0yMzEsNyArMjMxLDcgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdEZyb250
ZW5kRGlzcGF0Y2hlcnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1
aWxkZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgpAQCAtMjYyLDEzICsyNjIsMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2hh
ZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gK
LSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCisjaWZuZGVmIEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRl
ci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4KKyNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMjc2LDcg
KzI3Niw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotbmFtZXNwYWNlIFR5cGVCdWls
ZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgog
bmFtZXNwYWNlIFJ1bnRpbWUgewpAQCAtMzMxLDcgKzMzMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
QnVpbGRlcjxTVEFURSB8IFR5cGVTZXQ+JiBzZXRUeXBlKFR5cGUgdmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBUeXBlU2V0KSwgcHJvcGVydHlf
dHlwZV9hbHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBtX3Jlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgidHlwZSIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0RW51bUNvbnN0
YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpKTsKKyAgICAgICAgICAgIG1fcmVzdWx0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0eXBlIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6Omdl
dFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxUeXBlU2V0PigpOwogICAgICAgICB9CiAKQEAgLTM1Nywx
NCArMzU3LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmll
bGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAg
ICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRy
YWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMg
SXRlbVRyYWl0czsKIAogICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzdHJpbmciKSwgdmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0QXJyYXkoUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiB2YWx1ZSkKKyAgICB2b2lk
IHNldEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4g
dmFsdWUpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJ
SUxpdGVyYWwoImFycmF5IiksIHZhbHVlKTsKICAgICB9CkBAIC0zNzQsMTYgKzM3NCwxNiBAQCBw
dWJsaWM6CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2Ug
UHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVy
c19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oKQorIyMjIEVuZCBGaWxlOiBJ
bnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JU
ZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2Nv
bFR5cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KQEAgLTQxNSw3ICs0MTUsNyBAQCBwdWJsaWM6CiAvLyBieSB0aGUg
c2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTQyMyw3
ICs0MjMsNyBAQCBwdWJsaWM6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1uYW1lc3BhY2Ug
VHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiAgICAgIm51bGwiLApAQCAtNDM3LDEw
ICs0MzcsMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewog
CiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29s
CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEVu
ZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGQ0NTZjZTQ1MzFl
MzVhNDgwYzNiNzc5Y2RmMDk4ZGNmMWI4YzYwNTIuLjVmMTU2ZGNkOTg2ZTA3NzQzZjc2ODE1ZmVh
MTZiMDNjYzRlNDZkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0
aXZlLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRp
dmUtdHlwZS5qc29uLXJlc3VsdApAQCAtNjYsNyArNjYsNyBAQAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNjgsNyArMTY4LDcgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2Nv
bFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
PgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgpAQCAtMjMxLDcgKzIzMSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogCi0j
IyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2MiwxMyArMjYyLDEz
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1w
cmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCi0jZGVmaW5lIEluc3Bl
Y3RvclRlc3RUeXBlQnVpbGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBl
c19oCisjZGVmaW5lIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
aD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KKyNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+CisjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3Bh
Y2UgUHJvdG9jb2wgewogCiAKIApAQCAtMjk2LDE2ICsyOTYsMTYgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSkKIAogCiAK
LX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAK
LSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5k
IEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQ
cm90b2NvbFR5cGVzLmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRl
cnMuY3BwCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgpAQCAtMzM3LDcgKzMzNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBnZXRU
ZXN0RW51bUNvbnN0YW50VmFsdWUoVCBlbnVtVmFsdWUpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29s
VHlwZXMuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTM0NSw3ICszNDUsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKFQgZW51
bVZhbHVlKQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVy
IHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlbnVt
X2NvbnN0YW50X3ZhbHVlc1tdID0gewogfTsKQEAgLTM1NiwxMCArMzU2LDEwIEBAIFN0cmluZyBn
ZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNl
IFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVz
dFByb3RvY29sVHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBl
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAppbmRl
eCA3ODdmZjRkZWE5ZTdmMDQxNWViYjhmM2E5MjZhNjc3ZGU5MTU5M2FlLi4yODhjOGQ5YzkzMWI3
YmQwMTVkZTM4ZGIzYzQyMzZlYWZhYmExOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
cnJheS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNv
bi1yZXN1bHQKQEAgLTY5LDcgKzY5LDcgQEAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0o
IkRlYnVnZ2VyLlJlYXNvbiIsIHtEaWVkOiAiRGllZCIsIEZhaW50ZWQ6ICJGYWludGUKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJz
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTcxLDcgKzE3
MSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTIzNCw3ICsyMzQsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNwYXRj
aGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAor
IyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0y
NjUsMTMgKzI2NSwxMyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0
aW9uLWFycmF5LXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5n
cy5weQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmluZSBJbnNw
ZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlw
ZXNfaAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJz
Lmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC0yNzksNyArMjc5LDcgQEAgbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNw
YWNlIFByb3RvY29sIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiBuYW1lc3BhY2UgRGVi
dWdnZXIgewpAQCAtMzE2LDE2ICszMTYsMTYgQEAgZW51bSBjbGFzcyBSZWFzb24gewogCiAKIAot
fSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAot
I2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQg
RmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFBy
b3RvY29sVHlwZXMuaAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVy
cy5jcHAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC0zNTcsNyArMzU3LDcgQEAgZW51bSBjbGFzcyBSZWFzb24gewogLy8gYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWlu
c3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC0zNjUsNyAr
MzY1LDcgQEAgZW51bSBjbGFzcyBSZWFzb24gewogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAot
bmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0gewogICAgICJEaWVkIiwK
QEAgLTM3OSwxMCArMzc5LDEwIEBAIFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoaW50
IGNvZGUpIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFj
ZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5j
cHAKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlv
bi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZGVhZTU1YzlkYzVhMWQ4YWU5Mjc5MGE3ODBl
ZGI3MjI0NGI2ZjNjZC4uNmE4MmJkZTcwMDY2ZTY5MWU2MzE2ZGFiYTA1ZDY0MzY0ZmE1ZjYyMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAtNzAsNyArNzAsNyBAQCBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiUnVudGltZS5Ud29MZWdnZWRBbmltYWxzIiwge0R1
Y2tzOiAiRHVja3MiLCBIZW5zOgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUg
Ikluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJv
dG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC0xNzIsNyArMTcyLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWls
ZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
MjM1LDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjIyMgRW5kIEZpbGU6IElu
c3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogCi0jIyMgQmVnaW4gRmlsZTogSW5z
cGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFBy
b3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2NiwxMyArMjY2LDEzIEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24KIC8vIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JUZXN0VHlw
ZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCisjaWZuZGVm
IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yVGVzdFByb3Rv
Y29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29s
VHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IApAQCAtMjgwLDcgKzI4MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotbmFtZXNw
YWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIC8vIEZvcndhcmQgZGVj
bGFyYXRpb25zLgogbmFtZXNwYWNlIFJ1bnRpbWUgewpAQCAtMzE4LDE2ICszMTgsMTYgQEAgZW51
bSBjbGFzcyBUd29MZWdnZWRBbmltYWxzIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWls
ZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNw
ZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBl
QnVpbGRlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVz
X2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIAotIyMjIEJl
Z2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgQmVnaW4gRmlsZTog
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzU5LDcgKzM1OSw3IEBA
IGVudW0gY2xhc3MgVHdvTGVnZ2VkQW5pbWFscyB7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlw
ZXMuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBlbnVt
IGNsYXNzIFR3b0xlZ2dlZEFuaW1hbHMgewogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotbmFt
ZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0gewogICAgICJQaWdzIiwKQEAg
LTM4NSwxMCArMzg1LDEwIEBAIFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQ
cm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAK
KyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IDk2MDY4OGNjYjE0ZDk3YTZlZTg3ZWUxMmIz
ZjNiNjAwZTdiNDFhYzguLjgxZmQzYTRhNTFmNWI1MWUxNDFiNGQyMjUzMDI0ZDQ4NjhlYzFiOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC02OSw3ICs2OSw3IEBA
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJUZXN0LmF0dGVtcHRDdXJzZSIsIFt7
Im5hbWUiOiAiY3Vyc2UiLCAidHlwZSI6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTgwLDcgKzgwLDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKIGNsYXNzIEluc3BlY3RvclRlc3RCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBhdHRlbXB0Q3Vyc2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl9jdXJzZSwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfY2Vuc29yZWRDdXJzZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhdHRlbXB0Q3Vyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl9jdXJzZSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfY2Vuc29yZWRDdXJzZSkgPSAwOwog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclRlc3RCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIoKTsKIH07CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBJbnNwZWN0b3JUZXN0QmFja2Vu
ZERpc3BhdGNoZXI6OmF0dGVtcHRDdXJzZShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2IK
IAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PFN0cmluZz4gb3V0X2NlbnNvcmVkQ3Vyc2U7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4gb3V0X2NlbnNvcmVkQ3Vyc2U7CiAgICAgbV9h
Z2VudC0+YXR0ZW1wdEN1cnNlKCZlcnJvciwgaW5fY3Vyc2UsICZvdXRfY2Vuc29yZWRDdXJzZSk7
CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSW5z
cGVjdG9yVGVzdEJhY2tlbmREaXNwYXRjaGVyOjphdHRlbXB0Q3Vyc2UobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlY3Rvck9iCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2Nv
bFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
PgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgpAQCAtMjk5LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogCi0j
IyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTMzMCwxMyArMzMwLDEz
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5
cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZu
ZGVmIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JUZXN0VHlw
ZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAorI2RlZmlu
ZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0jaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC0zNDQsNyArMzQ0LDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29s
IHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
QEAgLTQ0MCw3ICs0NDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gQnVpbGRl
cjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAg
ICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRz
IEl0ZW1UcmFpdHM7CisgICAgdHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpTdHJ1Y3RJdGVt
VHJhaXRzIEl0ZW1UcmFpdHM7CiB9OwogCiBjbGFzcyBPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSA6
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UgewpAQCAtNDg5LDkgKzQ4OSw5
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAgICB0eXBlZGVm
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKKyAg
ICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0
czsKIAotICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+PiB2YWx1ZSkKKyAgICB2b2lkIHNldENvbHVtbk5hbWVzKFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCiAgICAg
ewogICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwoImNv
bHVtbk5hbWVzIiksIHZhbHVlKTsKICAgICB9CkBAIC01MTYsNyArNTE2LDcgQEAgcHVibGljOgog
ICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxv
YWQiKSwgdmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RXJyb3IoUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHZhbHVlKQorICAgIHZvaWQgc2V0
RXJyb3IoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHZh
bHVlKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgiZXJyb3IiKSwgdmFsdWUpOwogICAgIH0KQEAgLTU1Myw3ICs1NTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBQYXJhbWV0ZXJCdW5kbGU7CiAgICAgcHVibGljOgog
Ci0gICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVz
KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gdmFsdWUp
CisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVz
KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBDb2x1bW5OYW1l
c1NldCksIHByb3BlcnR5X2NvbHVtbk5hbWVzX2FscmVhZHlfc2V0KTsKICAgICAgICAgICAgIG1f
cmVzdWx0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIHZhbHVlKTsKQEAg
LTU4OCw3ICs1ODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPFBh
eWxvYWRTZXQ+KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyPFNUQVRFIHwgRXJyb3JT
ZXQ+JiBzZXRFcnJvcihQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNl
OjpFcnJvcj4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBFcnJvclNldD4mIHNldEVy
cm9yKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiB2YWx1
ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIEVycm9y
U2V0KSwgcHJvcGVydHlfZXJyb3JfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQt
PnNldE9iamVjdChBU0NJSUxpdGVyYWwoImVycm9yIiksIHZhbHVlKTsKQEAgLTYyMiw3ICs2MjIs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4o
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRl
ZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7Cisg
ICAgdHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFp
dHM7CiB9OwogCiAvKiBDb25mbGljdGVkIG5hbWVzIG1heSBjYXVzZSBnZW5lcmF0ZWQgZ2V0dGVy
cy9zZXR0ZXJzIHRvIGNsYXNoIHdpdGggYnVpbHQtaW4gSW5zcGVjdG9yT2JqZWN0IG1ldGhvZHMu
ICovCkBAIC03MTcsNyArNzE3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CiAgICAgfQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRy
YWl0cyBJdGVtVHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0
SXRlbVRyYWl0cyBJdGVtVHJhaXRzOwogfTsKIAogfSAvLyBEYXRhYmFzZQpAQCAtNzU1LDcgKzc1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFBhcmFtZXRlckJ1bmRsZTsKICAg
ICBwdWJsaWM6CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvbHVtbk5hbWVzU2V0PiYgc2V0
Q29sdW1uTmFtZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvbHVtbk5hbWVzU2V0PiYgc2V0
Q29sdW1uTmFtZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAm
IENvbHVtbk5hbWVzU2V0KSwgcHJvcGVydHlfY29sdW1uTmFtZXNfYWxyZWFkeV9zZXQpOwogICAg
ICAgICAgICAgbV9yZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwg
dmFsdWUpOwpAQCAtNzkwLDcgKzc5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBj
YXN0U3RhdGU8UGF5bG9hZFNldD4oKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXI8U1RB
VEUgfCBFcnJvclNldD4mIHNldEVycm9yKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGF0YWJhc2U6OkVycm9yPiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IEVycm9y
U2V0PiYgc2V0RXJyb3IoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNU
QVRFICYgRXJyb3JTZXQpLCBwcm9wZXJ0eV9lcnJvcl9hbHJlYWR5X3NldCk7CiAgICAgICAgICAg
ICBtX3Jlc3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgdmFsdWUpOwpAQCAt
ODI0LDIzICs4MjQsMjMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8
Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAg
fQotICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJ
dGVtVHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRy
YWl0cyBJdGVtVHJhaXRzOwogfTsKIAogfSAvLyBUZXN0CiAKIAogCi19IC8vIG5hbWVzcGFjZSBU
eXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JU
ZXN0VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9j
b2xUeXBlc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAK
LSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2lu
IEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTg3Miw3ICs4
NzIsNyBAQCBwdWJsaWM6CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxk
ZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAKQEAgLTg4MCw3ICs4ODAsNyBAQCBwdWJsaWM6CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3Rv
Y29sIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10g
PSB7CiB9OwpAQCAtODkxLDEwICs4OTEsMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRW
YWx1ZShpbnQgY29kZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8g
bmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1
aWxkZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
cmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggOWQ0ZmVhYjI1MDI2NGNh
NmZlNGRhNGVkYjhjODQ5ZmQ3MzI5NTg1Yi4uMWVmMTNjNzIwNTQ1NmIwM2M4YWExYzNkMjQ2Y2Vk
NTExMzRhNGZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTcw
LDcgKzcwLDcgQEAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIlRlc3QuQ2FzdGVkQW5p
bWFscyIsIHtEdWNrczogIkR1Y2tzIiwgSGVuczogIkhlbnMKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTcyLDcgKzE3Miw3IEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xU
eXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTIzNSw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
IyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKIAotIyMj
IEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yNjYsMTMgKzI2NiwxMyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3Rz
Lmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRl
ZiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVC
dWlsZGVyc19oCisjaWZuZGVmIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUg
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMjgwLDcgKzI4MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiAKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7
CiAKIC8vIEZvcndhcmQgZGVjbGFyYXRpb25zLgogbmFtZXNwYWNlIFRlc3QgewpAQCAtMzU0LDEw
ICszNTQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxOdW1iZXJT
ZXQ+KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQW5pbWFsc1NldD4m
IHNldEFuaW1hbHMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6Q2FzdGVkQW5pbWFscyB2
YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IEFuaW1hbHNTZXQ+JiBzZXRBbmltYWxzKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHMgdmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBBbmltYWxzU2V0KSwgcHJvcGVy
dHlfYW5pbWFsc19hbHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBtX3Jlc3VsdC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiYW5pbWFscyIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0
RW51bUNvbnN0YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpKTsKKyAgICAgICAgICAg
IG1fcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJhbmltYWxzIiksIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVl
KSkpOwogICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxBbmltYWxzU2V0PigpOwogICAgICAg
ICB9CiAKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2Fz
dFN0YXRlPElkU2V0PigpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IFRy
ZWVTZXQ+JiBzZXRUcmVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6
UmVjdXJzaXZlT2JqZWN0MT4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBUcmVlU2V0
PiYgc2V0VHJlZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2
ZU9iamVjdDE+IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCgh
KFNUQVRFICYgVHJlZVNldCksIHByb3BlcnR5X3RyZWVfYWxyZWFkeV9zZXQpOwogICAgICAgICAg
ICAgbV9yZXN1bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInRyZWUiKSwgdmFsdWUpOwpAQCAt
NDAxLDcgKzQwMSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5v
RmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0K
LSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRl
bVRyYWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFp
dHMgSXRlbVRyYWl0czsKIH07CiAKIC8qICAqLwpAQCAtNDY0LDkgKzQ2NCw5IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVmIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKIAotICAgIHZv
aWQgc2V0T2JqKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJz
aXZlT2JqZWN0Mj4gdmFsdWUpCisgICAgdm9pZCBzZXRPYmooUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEluc3BlY3Rvck9iamVjdEJhc2U6OnNldE9iamVjdChBU0NJSUxpdGVyYWwoIm9iaiIpLCB2YWx1
ZSk7CiAgICAgfQpAQCAtNTE4LDkgKzUxOCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCkpOwogICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVj
dEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKIAotICAgIHZvaWQgc2V0T2JqKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT4gdmFsdWUp
CisgICAgdm9pZCBzZXRPYmooUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpS
ZWN1cnNpdmVPYmplY3QxPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdEJh
c2U6OnNldE9iamVjdChBU0NJSUxpdGVyYWwoIm9iaiIpLCB2YWx1ZSk7CiAgICAgfQpAQCAtNTI4
LDM4ICs1MjgsMzggQEAgcHVibGljOgogCiB9IC8vIFRlc3QKIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
QmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpDYXN0ZWRBbmltYWxz
PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRlc3Q6OkNhc3RlZEFuaW1hbHM+IHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgdm9p
ZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7
CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiB7
Ci1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVl
ZGluZ0Nhc3Q+IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZT4gdmFsdWUpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlBy
b3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IHsKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gcnVudGltZUNhc3QoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSk7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZSopOwogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH07Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJl
Y3Vyc2l2ZU9iamVjdDE+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVj
dG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT4gewogI2lmICFBU1NFUlRfRElT
QUJMRUQKIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqKTsKICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwotdGVtcGxh
dGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpS
ZWN1cnNpdmVPYmplY3QyPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+IHsKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlKik7CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogfTsKIAotfSAv
LyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2Vu
ZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQgRmls
ZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVj
dG9yVGVzdFByb3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3Rv
Y29sVHlwZXMuaAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5j
cHAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSopOwogLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC01OTksNyArNTk5LDcgQEAgc3Rh
dGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSopOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVy
IHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlbnVt
X2NvbnN0YW50X3ZhbHVlc1tdID0gewogICAgICJEdWNrcyIsCkBAIC02MTgsNyArNjE4LDcgQEAg
U3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAKICNpZiAhQVNT
RVJUX0RJU0FCTEVECi12b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
VGVzdDo6Q2FzdGVkQW5pbWFscz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQordm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlw
ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKIHsKICAgICBTdHJpbmcgczsKICAg
ICBib29sIGNhc3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsKQEAgLTYyOCw3ICs2MjgsNyBA
QCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6Q2FzdGVk
QW5pbWFscz46OmFzc2VydFZhbHVlSGFzRQogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIAog
I2lmICFBU1NFUlRfRElTQUJMRUQKLXZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlw
ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKK3ZvaWQgQmluZGluZ1RyYWl0czxJ
bnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhh
c0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKIHsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUt
PmFzT2JqZWN0KCZvYmplY3QpOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgQmluZGluZ1RyYWl0
czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRW
YWx1ZUhhCiAgICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGFuaW1hbHNQ
b3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJhbmltYWxzIikpOwogICAgICAgICBBU1NF
UlQoYW5pbWFsc1BvcyAhPSBvYmplY3QtPmVuZCgpKTsKLSAgICAgICAgQmluZGluZ1RyYWl0czxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0VmFsdWVI
YXNFeHBlY3RlZFR5cGUoYW5pbWFsc1Bvcy0+dmFsdWUuZ2V0KCkpOworICAgICAgICBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+Ojphc3NlcnRW
YWx1ZUhhc0V4cGVjdGVkVHlwZShhbmltYWxzUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBpZFBvcyA9IG9iamVjdC0+Zmlu
ZChBU0NJSUxpdGVyYWwoImlkIikpOwpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3Nl
cnRWYWx1ZUhhCiAgICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHRyZWVQ
b3MgPSBvYmplY3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJ0cmVlIikpOwogICAgICAgICBBU1NFUlQo
dHJlZVBvcyAhPSBvYmplY3QtPmVuZCgpKTsKLSAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNF
eHBlY3RlZFR5cGUodHJlZVBvcy0+dmFsdWUuZ2V0KCkpOworICAgICAgICBCaW5kaW5nVHJhaXRz
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1
ZUhhc0V4cGVjdGVkVHlwZSh0cmVlUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgfQogCiAgICAgaW50
IGZvdW5kUHJvcGVydGllc0NvdW50ID0gNTsKQEAgLTY2NSwyMSArNjY1LDIxIEBAIHZvaWQgQmlu
ZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+
Ojphc3NlcnRWYWx1ZUhhCiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojpy
dW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6
cnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkK
IHsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgICBi
b29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CiAgICAgQVNTRVJUX1VOVVNF
RChjYXN0UmVzLCBjYXN0UmVzKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3Nl
cnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShvYmplY3QuZ2V0KCkpOworICAgIEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6YXNzZXJ0VmFsdWVI
YXNFeHBlY3RlZFR5cGUob2JqZWN0LmdldCgpKTsKICNlbmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxF
RAotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0
OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJh
c2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkpOworICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Qp
ID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJv
YmxlbSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6
OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
QmFzZSo+KG9iamVjdC5nZXQoKSkpOwogfQogCiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi12b2lk
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2Jq
ZWN0MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUqIHZhbHVlKQordm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6
OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBv
YmplY3Q7CiAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwpAQCAt
Njg5LDcgKzY4OSw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVICiAgICAgewogICAgICAgICBJ
bnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIG9ialBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVy
YWwoIm9iaiIpKTsKICAgICAgICAgaWYgKG9ialBvcyAhPSBvYmplY3QtPmVuZCgpKSB7Ci0gICAg
ICAgICAgICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJlY3Vy
c2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShvYmpQb3MtPnZhbHVlLmdl
dCgpKTsKKyAgICAgICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVz
dDo6UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9ialBvcy0+
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAg
ICAgfQogICAgIH0KQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSAog
I2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLXZvaWQg
QmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpSZWN1cnNpdmVPYmpl
Y3QyPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZSogdmFsdWUpCit2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqIHZhbHVlKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9i
amVjdDsKICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CkBAIC03
MDksNyArNzA5LDcgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUgKICAgICB7CiAgICAgICAgIElu
c3BlY3Rvck9iamVjdDo6aXRlcmF0b3Igb2JqUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJh
bCgib2JqIikpOwogICAgICAgICBpZiAob2JqUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKLSAgICAg
ICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJz
aXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9ialBvcy0+dmFsdWUuZ2V0
KCkpOworICAgICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0
OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUob2JqUG9zLT52
YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAg
ICB9CiAgICAgfQpAQCAtNzE4LDEwICs3MTgsMTAgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUgK
IH0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWls
ZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29s
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdo
RmlkZWxpdHlUeXBlUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmNwcAppbmRleCA4MzQ5NjMwZjBjMTI4MDdlZDIwNmY4
OWFlZWE1MzY5MjllNmEwYzAxLi4yM2MyM2RmNmQ2MDAzNGUxMDFkNzE4MjRlZmUxNGQxOGUyNGMw
Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxp
dHlUeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hp
Z2hGaWRlbGl0eVR5cGVQcm9maWxlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaCIKIAotI2luY2x1
ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNQcm90
b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhpZ2hGaWRlbGl0eVR5cGVQcm9maWxlcjo6aW5zZXJ0
TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9uKiBsb2NhdGlvbikKICAgICBidWNrZXQuYXBwZW5kKGxv
Y2F0aW9uKTsKIH0KIAotdm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldFR5cGVzRm9y
VmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9y
IGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mIGRlc2NyaXB0
aW9uKQordm9pZCBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVB
dE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0
b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mIGRlc2NyaXB0aW9uKQogewogICAg
IFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBmaW5kTG9jYXRpb24oZGl2b3QsIHNvdXJjZUlELCBk
ZXNjcmlwdG9yKTsKICAgICBpZiAoIWxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGlnaEZpZGVsaXR5VHlwZVByb2ZpbGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAppbmRleCAxMjNj
MjU1Mzc5NjExMWE2YzQ5YjgyNzIyZjY2MDkzMzZiNzNhMWY2Li43ODY5NTNiMmZlZjE1YTNjYzg1
Yjk1NTE3ODQyOGVlMmZjYzUwOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIuaApAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7IG5hbWVzcGFjZSBUeXBlQnVpbGRlciAgeyBuYW1l
c3BhY2UgUnVudGltZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsgbmFtZXNwYWNlIFByb3RvY29s
ICB7IG5hbWVzcGFjZSBSdW50aW1lIHsKIGNsYXNzIFR5cGVEZXNjcmlwdGlvbjsKIH19fQogCkBA
IC05NSw3ICs5NSw3IEBAIGVudW0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciB7CiBjbGFz
cyBIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIgewogcHVibGljOgogICAgIHZvaWQgbG9nVHlwZXNG
b3JUeXBlTG9jYXRpb24oVHlwZUxvY2F0aW9uKik7Ci0gICAgdm9pZCBnZXRUeXBlc0ZvclZhcmlh
YmxlQXRPZmZzZXRGb3JJbnNwZWN0b3IoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNj
cmlwdG9yLCB1bnNpZ25lZCBkaXZvdCwgaW50cHRyX3Qgc291cmNlSUQsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+Jik7CisgICAgdm9pZCBn
ZXRUeXBlc0ZvclZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3IoVHlwZVByb2ZpbGVyU2VhcmNo
RGVzY3JpcHRvciBkZXNjcmlwdG9yLCB1bnNpZ25lZCBkaXZvdCwgaW50cHRyX3Qgc291cmNlSUQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+Jik7
CiAgICAgdm9pZCBpbnNlcnROZXdMb2NhdGlvbihUeXBlTG9jYXRpb24qKTsKICAgICBGdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUqIGZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpIHsgcmV0dXJuICZt
X2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsgfQogICAgIFR5cGVMb2NhdGlvbkNhY2hlKiB0eXBl
TG9jYXRpb25DYWNoZSgpIHsgcmV0dXJuICZtX3R5cGVMb2NhdGlvbkNhY2hlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IDQ2ZmJhOTliYTEyY2Q2OWE3
NDViOTdlYjQ3OTkzNTVkNzEzYjI4NjQuLmE4ZjlhNTUwMDkwMDVmOGFkMzNhYjVhYmQ0NzY5NTQx
MjA3MmU0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVT
ZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVHlwZVNldC5o
IgogCi0jaW5jbHVkZSAiSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JKU1Byb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC0yMTQsOSArMjE0LDkgQEAgU3RyaW5nIFR5cGVTZXQ6OmRpc3BsYXlOYW1lKCkgY29uc3QKICAg
ICByZXR1cm4gIihtYW55KSI7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4gVHlwZVNldDo6YWxsUHJpbWl0aXZlVHlwZU5hbWVzKCkgY29uc3QK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gVHlwZVNldDo6
YWxsUHJpbWl0aXZlVHlwZU5hbWVzKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gc2VlbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiBzZWVuID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pjo6Y3JlYXRlKCk7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVVuZGVmaW5lZCkKICAgICAg
ICAgIHNlZW4tPmFkZEl0ZW0oIlVuZGVmaW5lZCIpOwogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5
cGVOdWxsKQpAQCAtMjMzLDkgKzIzMyw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPj4gVHlwZVNldDo6YWxsUHJpbWl0aXZlVHlwZU5hbWVzCiAgICAg
cmV0dXJuIHNlZW4ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURl
c2NyaXB0aW9uPj4gVHlwZVNldDo6YWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkgY29uc3QK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBUeXBlU2V0OjphbGxTdHJ1Y3R1cmVS
ZXByZXNlbnRhdGlvbnMoKSBjb25zdAogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNj
cmlwdGlvbj4+IGRlc2NyaXB0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBkZXNjcmlwdGlvbiA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0
cnVjdHVyZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fc3RydWN0dXJlSGlzdG9yeS0+c2l6ZSgpOyBpKyspCiAgICAgICAgIGRlc2NyaXB0aW9u
LT5hZGRJdGVtKG1fc3RydWN0dXJlSGlzdG9yeS0+YXQoaSktPmluc3BlY3RvclJlcHJlc2VudGF0
aW9uKCkpOwpAQCAtMzYxLDE0ICszNjEsMTQgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpzdHJp
bmdSZXByZXNlbnRhdGlvbigpCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uLnRvU3RyaW5nKCk7
CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3RydWN0
dXJlRGVzY3JpcHRpb24+IFN0cnVjdHVyZVNoYXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlvbigp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2Ny
aXB0aW9uPiBTdHJ1Y3R1cmVTaGFwZTo6aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKQogewotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlw
dGlvbj4gYmFzZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURl
c2NyaXB0aW9uOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IGN1cnJlbnRPYmplY3QgPSBiYXNlOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlv
bj4gYmFzZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0
aW9uOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
U3RydWN0dXJlRGVzY3JpcHRpb24+IGN1cnJlbnRPYmplY3QgPSBiYXNlOwogICAgIFJlZlB0cjxT
dHJ1Y3R1cmVTaGFwZT4gY3VycmVudFNoYXBlID0gdGhpczsKIAogICAgIHdoaWxlIChjdXJyZW50
U2hhcGUpIHsKLSAgICAgICAgYXV0byBmaWVsZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgYXV0byBmaWVsZHMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvIGl0
ID0gY3VycmVudFNoYXBlLT5tX2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBjdXJyZW50U2hhcGUtPm1f
ZmllbGRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBmaWVsZHMtPmFkZEl0
ZW0oKCppdCkuZ2V0KCkpOwogCkBAIC0zNzYsNyArMzc2LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gU3RydWN0dXJl
U2hhcGUKICAgICAgICAgY3VycmVudE9iamVjdC0+c2V0Q29uc3RydWN0b3JOYW1lKGN1cnJlbnRT
aGFwZS0+bV9jb25zdHJ1Y3Rvck5hbWUpOwogCiAgICAgICAgIGlmIChjdXJyZW50U2hhcGUtPm1f
cHJvdG8pIHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gbmV4dE9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlw
dGlvbj4gbmV4dE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVy
ZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QtPnNldFBy
b3RvdHlwZVN0cnVjdHVyZShuZXh0T2JqZWN0KTsKICAgICAgICAgICAgIGN1cnJlbnRPYmplY3Qg
PSBuZXh0T2JqZWN0OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmgKaW5kZXggMzRmYTQwZDAyYjhkZGYxOGZhYTM0ZWI5MTgyZTU5OWNmMjMzYjQ0ZC4uM2Ez
M2Y0YTczYzVmZTcyZDVkOGVmYzAxNjg5ZjBhYTcwMDVjMGY3NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVTZXQuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIg
IHsKK25hbWVzcGFjZSBQcm90b2NvbCAgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgQXJy
YXk7CiAKIG5hbWVzcGFjZSBSdW50aW1lIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgbWFya0FzRmluYWwoKTsKICAgICB2b2lkIGFkZFByb3BlcnR5KFJlZlB0cjxTdHJpbmdJ
bXBsPik7CiAgICAgU3RyaW5nIHN0cmluZ1JlcHJlc2VudGF0aW9uKCk7Ci0gICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4g
aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBpbnNwZWN0b3JSZXByZXNlbnRh
dGlvbigpOwogICAgIHZvaWQgc2V0Q29uc3RydWN0b3JOYW1lKFN0cmluZyBuYW1lKSB7IG1fY29u
c3RydWN0b3JOYW1lID0gKG5hbWUuaXNFbXB0eSgpID8gIk9iamVjdCIgOiBuYW1lKTsgfQogICAg
IFN0cmluZyBjb25zdHJ1Y3Rvck5hbWUoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yTmFtZTsgfQog
ICAgIHZvaWQgc2V0UHJvdG8oUGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUpIHsgbV9w
cm90byA9IHNoYXBlOyB9CkBAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUnVu
dGltZVR5cGUgZ2V0UnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVlKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgc2VlblR5cGVzKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1l
KCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBhbGxQcmltaXRpdmVUeXBlTmFtZXMoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRp
bWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBhbGxQcmltaXRpdmVUeXBlTmFtZXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVy
ZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIGxlYXN0Q29tbW9uQW5jZXN0b3IoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggY2UxNTgxZGQ5NTkyMjlhYmIxODdkZGRlYmJlMGJhMGRjMTdmNzI1OC4u
Mzc0Y2Q5NzU4YTkwNDEzMTEyZGE0MDBkNjQzZDEyM2YxZTcwMmZmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc5NCw4ICs3OTQsOCBAQCBzZXQoV2ViQ29yZV9JTlNQRUNUT1JfUFJPVE9DT0xf
U0NSSVBUUwogICAgICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2Vu
ZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CiAgICAgJHtXZWJDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRj
aGVyX2hlYWRlci5weQogICAgICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVn
ZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQotICAgICR7
V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWls
ZGVyX2hlYWRlci5weQotICAgICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVn
ZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJHtXZWJDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19o
ZWFkZXIucHkKKyAgICAke1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dl
bmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CiAgICAgJHtXZWJDb3JlX0lO
U1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0b3IucHkKICAgICAke1dlYkNvcmVf
SU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKICAg
ICAke1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL19faW5pdF9fLnB5CkBA
IC0zMjg1LDggKzMyODUsOCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgICAgICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMu
aAogICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2Vi
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L0luc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaAotICAgICAgICAgICAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNw
cAotICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzLmgKKyAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0luc3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwCisgICAgICAgICAgICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgKICAgICAgICAgICAg
JHtERVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0luc3BlY3RvcldlYkJhY2tlbmRDb21tYW5kcy5qcwogICAgIE1BSU5fREVQRU5ERU5DWSAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViLmpzb24KICAgICBERVBF
TkRTICR7V2ViQ29yZV9JTlNQRUNUT1JfUFJPVE9DT0xfU0NSSVBUU30KQEAgLTMyOTcsNyArMzI5
Nyw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJCYWNrZW5kRGlz
cGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rv
cldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCi0gICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0luc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5jcHAKICkKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBhOWNmNmMyMWVhMjNmZTVhMWIxZjY3ZmI1ZjRm
MzY5ODk1NWUzZjQ4Li4wNGYxNDIxN2FiMGRiYzIzZjU5NGM0ODE2MzcxMWQyZTNhY2Q1MmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTExNTYsOCArMTE1Niw4IEBAIElOU1BF
Q1RPUl9HRU5FUkFUT1JfU0NSSVBUUyA9IFwKICAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVy
YXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBcCiAgICAgJChJbnNwZWN0
b3JTY3JpcHRzKS9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBcCiAgICAg
JChJbnNwZWN0b3JTY3JpcHRzKS9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5IFwKLSAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRlX3R5cGVfYnVpbGRl
cl9oZWFkZXIucHkgXAotICAgICQoSW5zcGVjdG9yU2NyaXB0cykvZ2VuZXJhdGVfdHlwZV9idWls
ZGVyX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRl
X3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBcCisgICAgJChJbnNwZWN0b3JTY3JpcHRzKS9nZW5l
cmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBcCiAgICAgJChJbnNwZWN0b3JT
Y3JpcHRzKS9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IFwKICAgICAkKEluc3BlY3RvclNjcmlwdHMp
L2dlbmVyYXRvci5weSBcCiAgICAgJChJbnNwZWN0b3JTY3JpcHRzKS9nZW5lcmF0ZS1jb21iaW5l
ZC1pbnNwZWN0b3ItanNvbi5weSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5
cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGI4OGJiODBiNTUzMDY0YjMyYWJkOGFmMWFjMmM0NzlhNDM4Nzg3
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2lu
c3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5NDk0
ZTA0Njg4ZTY2N2Y3ODE1OWY3NGNmZGFkMGQ5ODExNDQ0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9pbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQgKzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JKU1R5cGVCdWlsZGVyc19o
Ci0jZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzX2gKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvdG9jb2xUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5z
cGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGRiYmFjZDBkMjRk
ZGY2ODI2ODcxNzI5OGIxMzY5MTNkZDJiYzhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMu
aApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yUHJvdG9jb2xU
eXBlc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvclByb3RvY29sVHlwZXNfaAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0lu
c3BlY3RvclR5cGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmY5ZTExMzUyNjIxYTk5NGI3ODZkNjg0ZWM1NDAzYWE5Mjk4NjNjYi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQgKzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JUeXBlQnVp
bGRlcl9oCi0jZGVmaW5lIFdlYkNvcmVfRldEX0luc3BlY3RvclR5cGVCdWlsZGVyX2gKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgppbmRleCA2NTdkZDFhMmU1NDA1M2E2NDllMDkzYWM3MWZjMzI0M2Y5NDk2ZmM4
Li40NzQ3NTRkZDYwMTc4ZWVlODg2OTI2YmRlMmRiNjJmYzEyYzY1YzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKQEAgLTIxMDA0LDcgKzIxMDA0LDcgQEAgX19aVFZON1dlYkNvcmUxNEluc3BlY3RvclN0
eWxlRQogX19aVFZON1dlYkNvcmUxOUluc3BlY3RvclN0eWxlU2hlZXRFCiBfX1pUVk43V2ViQ29y
ZTMzSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlRQogX19aVFZON1dlYkNvcmUyMklu
c3BlY3RvclRpbWVsaW5lQWdlbnRFCi1fX1pON1dlYkNvcmUxMVR5cGVCdWlsZGVyTDIwZW51bV9j
b25zdGFudF92YWx1ZXNFCitfX1pON1dlYkNvcmU4UHJvdG9jb2xMMjBlbnVtX2NvbnN0YW50X3Zh
bHVlc0UKIF9fWlRWTjdXZWJDb3JlMTlJbnNwZWN0b3JPYmplY3RCYXNlRQogX19aVFZON1dlYkNv
cmUxOEluc3BlY3RvckFycmF5QmFzZUUKIF9fWlRWTjdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZUUK
QEAgLTIzOTk2LDcgKzIzOTk2LDcgQEAgX19fYmxvY2tfbGl0ZXJhbF9nbG9iYWwKIF9fX2Jsb2Nr
X2Rlc2NyaXB0b3JfdG1wCiBfX19ibG9ja19kZXNjcmlwdG9yX3RtcAogX19fYmxvY2tfZGVzY3Jp
cHRvcl90bXAKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfOUxheWVyVHJl
ZTVMYXllckVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzlMYXllclRyZWU1
TGF5ZXJFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMjNJbnNwZWN0
b3JMYXllclRyZWVBZ2VudEVFRQogX19aVFZON1dlYkNvcmUxNUluc3BlY3Rvck9iamVjdEUKIF9f
WlpON1dlYkNvcmVMMjBndWlkRm9yT3JpZ2luQW5kTmFtZUVSS04zV1RGNlN0cmluZ0VTM19FMTRj
dXJyZW50TmV3R1VJRApAQCAtMjQwNjEsMTAgKzI0MDYxLDEwIEBAIF9fWlRWTjdXZWJDb3JlNVRp
bWVySU5TXzIwQ2FjaGVkUmVzb3VyY2VMb2FkZXJFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3Ry
dW1lbnRhdGlvbjdXcmFwcGVySU4zSlNDMTlTb3VyY2VQcm92aWRlckNhY2hlRUVFCiBfX1pUVk43
V2ViQ29yZTIyQ2FudmFzUmVuZGVyaW5nQ29udGV4dEUKIF9fWlRWTjdXZWJDb3JlOUNsaXBib2Fy
ZEUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfN1J1bnRpbWUxMlJlbW90
ZU9iamVjdEVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzdSdW50aW1lMTJS
ZW1vdGVPYmplY3RFRUUKIF9fWlRWTjdXZWJDb3JlMThJbmplY3RlZFNjcmlwdEJhc2VFCiBfX1pU
Vk43V2ViQ29yZTExU2NyaXB0VmFsdWVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJy
YXlJTlMwXzRQYWdlMTFTZWFyY2hNYXRjaEVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJy
YXlJTlMwXzRQYWdlMTFTZWFyY2hNYXRjaEVFRQogX19aVFZON1dlYkNvcmUxNUNvbnRleHRGZWF0
dXJlc0UKIF9fWlRWTjdXZWJDb3JlMjFDb250ZXh0RmVhdHVyZXNDbGllbnRFCiBfX1pUVk4zV1RG
MjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxN0NTU1ByaW1pdGl2ZVZh
bHVlRUVFCkBAIC0yNDM2MCw3ICsyNDM2MCw3IEBAIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1l
bnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRUVFCiBfX1pUVk4zV1RGMjFN
ZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dEVF
RQogX19aVFZON1dlYkNvcmU1VGltZXJJTlNfMTFFdmVudFNlbmRlcklOU18xMUltYWdlTG9hZGVy
RUVFRUUKIF9fWlRWTjdXZWJDb3JlMTRJbmplY3RlZFNjcmlwdEUKLV9fWlRWTjdXZWJDb3JlMTFU
eXBlQnVpbGRlcjVBcnJheUlOUzBfOERlYnVnZ2VyOUNhbGxGcmFtZUVFRQorX19aVFZON1dlYkNv
cmU4UHJvdG9jb2w1QXJyYXlJTlMwXzhEZWJ1Z2dlcjlDYWxsRnJhbWVFRUUKIF9fWlRWTjdXZWJD
b3JlMTJTY3JpcHRPYmplY3RFCiBfX1pUVk43V2ViQ29yZTIwSW5qZWN0ZWRTY3JpcHRNb2R1bGVF
CiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxMlJl
bmRlck9iamVjdEVFRQpAQCAtMjQzNjksOCArMjQzNjksOCBAQCBfX1pUVk4zV1RGMjFNZW1vcnlJ
bnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmU5SW5saW5lQm94RUVFCiBfX1pUVk4zV1RG
MjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxNFJlbmRlck92ZXJmbG93
RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUx
M0lubGluZVRleHRCb3hFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNf
MTRJbnNwZWN0b3JBZ2VudEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5T
MF8xNkFwcGxpY2F0aW9uQ2FjaGUyNEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUVFRQotX19aVFZO
N1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8xNkFwcGxpY2F0aW9uQ2FjaGUxN0ZyYW1l
V2l0aE1hbmlmZXN0RUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfMTZBcHBs
aWNhdGlvbkNhY2hlMjRBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VFRUUKK19fWlRWTjdXZWJDb3Jl
OFByb3RvY29sNUFycmF5SU5TMF8xNkFwcGxpY2F0aW9uQ2FjaGUxN0ZyYW1lV2l0aE1hbmlmZXN0
RUVFCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzMwSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50RUVFCiBfX1pON1dlYkNvcmUyNkluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyMTJjb21tYW5kTmFtZXNFCiBfX1paTjdXZWJDb3JlMzBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlckltcGw4ZGlzcGF0Y2hFUktOM1dURjZTdHJpbmdFRThoYW5kbGVycwpAQCAtMjQzOTMs
MTkgKzI0MzkzLDE5IEBAIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVy
SU43V2ViQ29yZTE0SW5zcGVjdG9yU3RhdGVFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1l
bnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTIxSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyRUVFCiBfX1pU
Vk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxOUluc3RydW1l
bnRpbmdBZ2VudHNFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVy
SU43V2ViQ29yZTE0SW5zcGVjdG9yQWdlbnRFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRl
cjVBcnJheUlOUzBfM0NTUzZSZWdpb25FRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVB
cnJheUlpRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzlSdWxl
TWF0Y2hFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzdDU1NS
dWxlRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzNDU1M5TmFtZWRG
bG93RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTjNXVEY2U3RyaW5nRUVF
Ci1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzNDU1MxNUNTU1Byb3BlcnR5
SW5mb0VFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMTlDU1NT
dHlsZVNoZWV0SGVhZGVyRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMw
XzNDU1MxOUluaGVyaXRlZFN0eWxlRW50cnlFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRl
cjVBcnJheUlOUzBfM0NTUzE1UHNldWRvSWRNYXRjaGVzRUVFCitfX1pUVk43V2ViQ29yZThQcm90
b2NvbDVBcnJheUlOUzBfM0NTUzZSZWdpb25FRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFy
cmF5SWlFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1M5UnVsZU1hdGNo
RUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzdDU1NSdWxlRUVFCitf
X1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzlOYW1lZEZsb3dFRUUKK19fWlRW
TjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU4zV1RGNlN0cmluZ0VFRQorX19aVFZON1dlYkNvcmU4
UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1MxNUNTU1Byb3BlcnR5SW5mb0VFRQorX19aVFZON1dlYkNv
cmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1MxOUNTU1N0eWxlU2hlZXRIZWFkZXJFRUUKK19fWlRW
TjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zQ1NTMTlJbmhlcml0ZWRTdHlsZUVudHJ5RUVF
CitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzE1UHNldWRvSWRNYXRjaGVz
RUVFCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzE3SW5zcGVjdG9yQ1NT
QWdlbnRFRUUKIF9fWlRWTjdXZWJDb3JlNVRpbWVySU5TXzIyVXBkYXRlUmVnaW9uTGF5b3V0VGFz
a0VFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMjBTZWxlY3Rv
clByb2ZpbGVFbnRyeUVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1My
MFNlbGVjdG9yUHJvZmlsZUVudHJ5RUVFCiBfX1pUVk43V2ViQ29yZTE1U2VsZWN0b3JQcm9maWxl
RQogX19aVFZON1dlYkNvcmUxN0luc3BlY3RvckNTU0FnZW50MTNBZGRSdWxlQWN0aW9uRQogX19a
VFZON1dlYkNvcmUxN0luc3BlY3RvckNTU0FnZW50MTZTdHlsZVNoZWV0QWN0aW9uRQpAQCAtMjQ0
MTQsMTkgKzI0NDE0LDE5IEBAIF9fWlRWTjdXZWJDb3JlMTdJbnNwZWN0b3JDU1NBZ2VudDIwVG9n
Z2xlUHJvcGVydHlBY3Rpb25FCiBfX1pUVk43V2ViQ29yZTE3SW5zcGVjdG9yQ1NTQWdlbnQyMVNl
dFByb3BlcnR5VGV4dEFjdGlvbkUKIF9fWlRWTjdXZWJDb3JlMTdJbnNwZWN0b3JDU1NBZ2VudDIz
U2V0U3R5bGVTaGVldFRleHRBY3Rpb25FCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFn
ZW50SU5TXzIySW5zcGVjdG9yRGF0YWJhc2VBZ2VudEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVC
dWlsZGVyNUFycmF5SU5TXzE0SW5zcGVjdG9yVmFsdWVFRUUKK19fWlRWTjdXZWJDb3JlOFByb3Rv
Y29sNUFycmF5SU5TXzE0SW5zcGVjdG9yVmFsdWVFRUUKIF9fWk43V2ViQ29yZUwxMm5leHRVbnVz
ZWRJZEUKIF9fWk43V2ViQ29yZTIySW5zcGVjdG9yRGVidWdnZXJBZ2VudDIwYmFja3RyYWNlT2Jq
ZWN0R3JvdXBFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dl
YkNvcmUxNUluc3BlY3Rvck9iamVjdEVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0
aW9uN1dyYXBwZXJJTjNKU0M5RXhlY1N0YXRlRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxk
ZXI1QXJyYXlJTlMwXzhEZWJ1Z2dlcjhMb2NhdGlvbkVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9j
b2w1QXJyYXlJTlMwXzhEZWJ1Z2dlcjhMb2NhdGlvbkVFRQogX19aVFZON1dlYkNvcmUxOEluc3Bl
Y3RvckJhc2VBZ2VudElOU18yMkluc3BlY3RvckRlYnVnZ2VyQWdlbnRFRUUKLV9fWlRWTjdXZWJD
b3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0RPTTEzRXZlbnRMaXN0ZW5lckVFRQotX19aVFZO
N1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zRE9NNE5vZGVFRUUKK19fWlRWTjdXZWJD
b3JlOFByb3RvY29sNUFycmF5SU5TMF8zRE9NMTNFdmVudExpc3RlbmVyRUVFCitfX1pUVk43V2Vi
Q29yZThQcm90b2NvbDVBcnJheUlOUzBfM0RPTTROb2RlRUVFCiBfX1pUVk43V2ViQ29yZTE4SW5z
cGVjdG9yQmFzZUFnZW50SU5TXzE3SW5zcGVjdG9yRE9NQWdlbnRFRUUKIF9fWlRWTjdXZWJDb3Jl
NVRpbWVySU5TXzI4UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFza0VFRQogX19aVFZON1dlYkNv
cmUxOEluc3BlY3RvckJhc2VBZ2VudElOU18yNUluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnRFRUUK
LV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzFfSU4zV1RGNlN0cmluZ0VFRUVF
CitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzFfSU4zV1RGNlN0cmluZ0VFRUVFCiBf
X1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzI0SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dl
YkNvcmUxMVN0b3JhZ2VBcmVhRUVFCiBfX1pUVk43V2ViQ29yZTVUaW1lcklOU18yOEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaFRhc2tFRUUKQEAgLTI0NDM3LDQyICsyNDQzNyw0MiBAQCBfX1pUVk4z
V1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxOUhlYXBHcmFwaFNl
cmlhbGl6ZXJFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43
V2ViQ29yZTMxTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbEVFRQogX19aVFZOM1dURjIx
TWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJDb3JlMjVNZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsRUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklO
N1dlYkNvcmUyMEluc3BlY3Rvck1lbW9yeUFnZW50RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1
aWxkZXI1QXJyYXlJTlMwXzZNZW1vcnkxMU1lbW9yeUJsb2NrRUVFCitfX1pUVk43V2ViQ29yZThQ
cm90b2NvbDVBcnJheUlOUzBfNk1lbW9yeTExTWVtb3J5QmxvY2tFRUUKIF9fWlRWTjNXVEYyMU1l
bW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTExTWVtb3J5Q2FjaGVFRUUKIF9f
WlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU5TXzE1QXJyYXlCdWZmZXJW
aWV3RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklOU18xMUFy
cmF5QnVmZmVyRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzZNZW1v
cnkxM0xpc3RlbmVyQ291bnRFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlO
UzBfNk1lbW9yeTlOb2RlQ291bnRFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJh
eUlOUzBfNk1lbW9yeThET01Hcm91cEVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJ
TlMwXzZNZW1vcnkxM0xpc3RlbmVyQ291bnRFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFy
cmF5SU5TMF82TWVtb3J5OU5vZGVDb3VudEVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJy
YXlJTlMwXzZNZW1vcnk4RE9NR3JvdXBFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRh
dGlvbjdXcmFwcGVySU43V2ViQ29yZTdJbnRSZWN0RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1
aWxkZXI1QXJyYXlJTlMwXzRQYWdlMTdGcmFtZVJlc291cmNlVHJlZUVFRQotX19aVFZON1dlYkNv
cmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF80UGFnZTE3RnJhbWVSZXNvdXJjZVRyZWU5UmVzb3Vy
Y2VzRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzRQYWdlMTJTZWFy
Y2hSZXN1bHRFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfNFBhZ2U2
Q29va2llRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfNFBhZ2UxN0ZyYW1l
UmVzb3VyY2VUcmVlRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfNFBhZ2Ux
N0ZyYW1lUmVzb3VyY2VUcmVlOVJlc291cmNlc0VFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1
QXJyYXlJTlMwXzRQYWdlMTJTZWFyY2hSZXN1bHRFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29s
NUFycmF5SU5TMF80UGFnZTZDb29raWVFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNl
QWdlbnRJTlNfMThJbnNwZWN0b3JQYWdlQWdlbnRFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3Ry
dW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE4U2NyaXB0SGVhcFNuYXBzaG90RUVFCiBfX1pU
Vk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxM1NjcmlwdFBy
b2ZpbGVFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2Vi
Q29yZTIxSW5zcGVjdG9yQ29uc29sZUFnZW50RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxk
ZXI1QXJyYXlJTlMwXzhQcm9maWxlcjEzUHJvZmlsZUhlYWRlckVFRQorX19aVFZON1dlYkNvcmU4
UHJvdG9jb2w1QXJyYXlJTlMwXzhQcm9maWxlcjEzUHJvZmlsZUhlYWRlckVFRQogX19aVFZON1dl
YkNvcmUxOEluc3BlY3RvckJhc2VBZ2VudElOU18yMkluc3BlY3RvclByb2ZpbGVyQWdlbnRFRUUK
IF9fWlRWTjdXZWJDb3JlMTlXb3JrZXJQcm9maWxlckFnZW50RQogX19aVFZON1dlYkNvcmUxN1Bh
Z2VQcm9maWxlckFnZW50RQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJhc2VBZ2VudElOU18y
Mkluc3BlY3RvclJlc291cmNlQWdlbnRFRUUKLV9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRh
dGlvbjdXcmFwcGVySU43V2ViQ29yZTExVHlwZUJ1aWxkZXI3TmV0d29yazlJbml0aWF0b3JFRUUK
K19fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZThQcm90
b2NvbDdOZXR3b3JrOUluaXRpYXRvckVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0
aW9uN1dyYXBwZXJJTjdXZWJDb3JlMTNYSFJSZXBsYXlEYXRhRUVFCiBfX1pUVk4zV1RGMjFNZW1v
cnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUyMlRocmVhZGFibGVMb2FkZXJDbGll
bnRFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29y
ZTIwTmV0d29ya1Jlc291cmNlc0RhdGFFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNl
QWdlbnRJTlNfMjFJbnNwZWN0b3JSdW50aW1lQWdlbnRFRUUKIF9fWlRWTjdXZWJDb3JlMTRJbnNw
ZWN0b3JTdGF0ZUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzhD
U1NNZWRpYUVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMTRT
aG9ydGhhbmRFbnRyeUVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8z
Q1NTMTFDU1NQcm9wZXJ0eUVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5T
MF8zQ1NTMjRDU1NDb21wdXRlZFN0eWxlUHJvcGVydHlFRUUKK19fWlRWTjdXZWJDb3JlOFByb3Rv
Y29sNUFycmF5SU5TMF8zQ1NTOENTU01lZGlhRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVB
cnJheUlOUzBfM0NTUzE0U2hvcnRoYW5kRW50cnlFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29s
NUFycmF5SU5TMF8zQ1NTMTFDU1NQcm9wZXJ0eUVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1
QXJyYXlJTlMwXzNDU1MyNENTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eUVFRQogX19aVFZON1dlYkNv
cmUxOEluc3BlY3RvckJhc2VBZ2VudElOU18yMkluc3BlY3RvclRpbWVsaW5lQWdlbnRFRUUKLV9f
Wk43V2ViQ29yZTExVHlwZUJ1aWxkZXI3TmV0d29yazhSZXNwb25zZThNaW1lVHlwZUUKLV9fWk43
V2ViQ29yZTExVHlwZUJ1aWxkZXIzQ1NTMTFDU1NQcm9wZXJ0eThQcmlvcml0eUUKLV9fWk43V2Vi
Q29yZTExVHlwZUJ1aWxkZXIzQ1NTMTFDU1NQcm9wZXJ0eThQYXJzZWRPa0UKLV9fWk43V2ViQ29y
ZTExVHlwZUJ1aWxkZXIzQ1NTMTFDU1NQcm9wZXJ0eTZTdGF0dXNFCitfX1pON1dlYkNvcmU4UHJv
dG9jb2w3TmV0d29yazhSZXNwb25zZThNaW1lVHlwZUUKK19fWk43V2ViQ29yZThQcm90b2NvbDND
U1MxMUNTU1Byb3BlcnR5OFByaW9yaXR5RQorX19aTjdXZWJDb3JlOFByb3RvY29sM0NTUzExQ1NT
UHJvcGVydHk4UGFyc2VkT2tFCitfX1pON1dlYkNvcmU4UHJvdG9jb2wzQ1NTMTFDU1NQcm9wZXJ0
eTZTdGF0dXNFCiBfX1pON1dlYkNvcmUyMEluc3BlY3RvcldvcmtlckFnZW50MjFXb3JrZXJGcm9u
dGVuZENoYW5uZWw4c19uZXh0SWRFCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50
SU5TXzIwSW5zcGVjdG9yV29ya2VyQWdlbnRFRUUKIF9fWlRWTjdXZWJDb3JlMjBJbnNwZWN0b3JX
b3JrZXJBZ2VudDIxV29ya2VyRnJvbnRlbmRDaGFubmVsRQpAQCAtMjYyMzcsNyArMjYyMzcsNyBA
QCBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOWlzVmlkZW9UcmFja0VuYWJs
ZWRFCiBfX1pUVk43V2ViQ29yZTZTY3JlZW5FCiBfX1pUVk43V2ViQ29yZTI0U2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyRQogX19aVFZOM0pTQzlXZWFrR0NNYXBJUHZOU184SlNPYmplY3RFTlNfMzNE
ZWZhdWx0V2Vha0dDTWFwRmluYWxpemVyQ2FsbGJhY2tJUzFfUzJfRUVOM1dURjdQdHJIYXNoSVMx
X0VFTlM1XzEwSGFzaFRyYWl0c0lTMV9FRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1
QXJyYXlJTlMwXzdDb25zb2xlOUNhbGxGcmFtZUVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1
QXJyYXlJTlMwXzdDb25zb2xlOUNhbGxGcmFtZUVFRQogX19aVFZON1dlYkNvcmU1VGltZXJJTlNf
MTdTY3JpcHREZWJ1Z1NlcnZlckVFRQogX19aVFZON1dlYkNvcmU1VGltZXJJTlNfMjdTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlv
bjdXcmFwcGVySU43V2ViQ29yZTEwRmlsZVRocmVhZEVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggZjBiOWQwYzI2ZjVkZDAzOWVmYmRj
MjFmMmNjNGE1NjdlOWUxMjJiNS4uNDVlZGY3MjE5MTRmNGYzZDZlYjVhNTQzYzQ4OGY1MjUzYTlk
MmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC04MDUsNyArODA1LDcgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xIVE1MTmFtZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2Vi
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JX
ZWJQcm90b2NvbFR5cGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2
ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3JrZXIuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4MzA5LDcgKzE4MzA5LDcgQEAg77u/PD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JPdmVybGF5UGFnZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYkJh
Y2tlbmREaXNwYXRjaGVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIgLz4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JX
ZWJUeXBlQnVpbGRlcnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU0Fic3RyYWN0V29ya2VyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBdHRyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNC
YXJQcm9wLmgiIC8+CkBAIC0xODg2Niw4ICsxODg2Niw4IEBAIO+7vzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJk
aW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hl
cnMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGlu
c3BlY3RvclxJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVy
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNw
ZWN0b3JcSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xUeXBl
cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5z
cGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXFNjcmlwdEFyZ3VtZW50cy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXFNjcmlwdEJy
ZWFrcG9pbnQuaCIgLz4KQEAgLTIxMzgyLDQgKzIxMzgyLDQgQEAg77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25U
YXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0
b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4
IDM2MGI3OWE0OGNjNDBhMWZiN2FhYjQ2YzE5ZjQyYzlkNjg5ZTBlMmQuLjVlMWM0ZWM0OTVmMTcx
YzQ4MDg2MjUwMGYxNWZmYWZjOWI0NmEzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTUyMDYsNyArNTIw
Niw3IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViRnJv
bnRlbmREaXNwYXRjaGVycy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAiPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlByb3Rv
Y29sVHlwZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2Vz
XEpTQWJzdHJhY3RXb3JrZXIuY3BwIj4KQEAgLTEyMzE1LDEwICsxMjMxNSwxMCBAQCDvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckpTRnJvbnRlbmREaXNw
YXRjaGVycy5oIj4KICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCI+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVj
dG9ySlNQcm90b2NvbFR5cGVzLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xp
bnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JUeXBlQnVpbGRlci5o
Ij4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3Rv
clxJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVh
ZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMu
aCI+CkBAIC0xMzEzNiw3ICsxMzEzNiw3IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJj
ZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3Jl
XERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3JrZXIuaCI+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzFhZWFjMmE2MTU3YTVm
ZGUwMTM4Mzc2NTBlNTg0NDcwNjQ5MzE4MS4uOWJjZDQyYzBlZGUwOTc1YmViYzhmMTQzZTY3YTk1
NmNlNjgwN2M3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjA2MCw5ICsyMDYwLDkgQEAKIAkJNTNFRjc2NkMxNjUzMTk5NDAw
NENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkg
LyogU2V0dGluZ3NNYWNyb3MuaCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICov
OyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVj
dG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBl
QnVpbGRlcnMuY3BwICovOyB9OworCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVj
dG9yV2ViUHJvdG9jb2xUeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViUHJv
dG9jb2xUeXBlcy5jcHAgKi87IH07CiAJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNw
ZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9y
V2ViRnJvbnRlbmREaXNwYXRjaGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JX
ZWJUeXBlQnVpbGRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
NzhEQTIwRjE1MjBFQkEzMDA2MTQxQzEgLyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENF
MzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1N0I3OTFBMzE0QzZBNjI5MDBG
MjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50
RGlzdHJpYnV0b3IuY3BwICovOyB9OwogCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogQ29u
dGVudERpc3RyaWJ1dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdDRjQ5
NzQxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Q0Y0OTcyMTRFRTM2RDcwMEVDRkYxNCAv
KiBJbnNlcnRpb25Qb2ludC5jcHAgKi87IH07CkBAIC05MTc3LDggKzkxNzcsOCBAQAogCQk1M0VG
NzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVh
bGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBR
dWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwotCQk1NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2Vi
VHlwZUJ1aWxkZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJD
QSAvKiBJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9y
V2ViUHJvdG9jb2xUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JXZWJQcm90b2NvbFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudERpc3RyaWJ1dG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENv
bnRlbnREaXN0cmlidXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250
ZW50RGlzdHJpYnV0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzIx
NEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydGlvblBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1MTc5LDggKzE1MTc5LDggQEAKIAkJCQk0RjcwN0E5ODExRUY2Nzk0MDBB
Q0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCiAJCQkJNEY0RjVG
RkExMUNCRDJEMjAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3Bw
ICovLAogCQkJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVu
ZERpc3BhdGNoZXJzLmggKi8sCi0JCQkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvcldlYlR5cGVCdWlsZGVycy5jcHAgKi8sCi0JCQkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNB
IC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oICovLAorCQkJCTU3M0QxMzQ1MTRDRTM5RkYw
MDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmNwcCAqLywKKwkJCQk1NzNEMTM0
NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5oICovLAogCQkJ
CUE1ODRGRTM5MTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8s
CiAJCQkJQTU4NEZFM0ExODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0Lmgg
Ki8sCiAJCQkJN0EwRTc3MUMxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcCAqLywKQEAgLTI0NjM0LDcgKzI0NjM0LDcgQEAKIAkJCQlBNTkzQ0Y4QjE4NDA1MzUy
MDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQxQzEgLyogSW5zcGVj
dG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTc4REEyMEYx
NTIwRUJBMzAwNjE0MUMxIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMxIC8qIEluc3BlY3RvcldlYlByb3RvY29s
VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJ
bnNwZWN0b3JXb3JrZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM3NUNDMDcxMTUwRDMw
MDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGM0FCRkUwQzEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yODA3Miw3ICsyODA3Miw3IEBACiAJCQkJNzU0MTMzQUExMDJFMDBGNDAw
MDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEY3MDdBOTkxMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVy
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RjRGNUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5z
cGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzNE
MTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJQ
cm90b2NvbFR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzODEwQzFCMTM2NUE0OTYwMEVE
NkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzUw
QjczNTEzRjEzNzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDQ2RjA0RTE3Qjk2RkJEMDA1NjQ3RjAgLyogSW50UG9pbnQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhv
c3QuY3BwCmluZGV4IGI2OGI0Y2U5ZDI5Yjc5MGEzMjljZjIyODRhMzZiNTY2Y2RiOTJjMGUuLjQ1
MDA4OTYxZDFiMDQzM2ZlMDBmMmZkZjZiNWFhOGZmZjRjMmZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpkaXNjb25uZWN0KCkKIHZvaWQgQ29tbWFuZExpbmVB
UElIb3N0OjppbnNwZWN0SW1wbChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3QsIFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGhpbnRzKQogewogICAgIGlmIChtX2luc3BlY3RvckFn
ZW50KSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+IHJlbW90ZU9iamVjdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3Qob2JqZWN0KTsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4g
cmVtb3RlT2JqZWN0ID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChvYmplY3QpOwogICAgICAgICBtX2luc3BlY3Rv
ckFnZW50LT5pbnNwZWN0KHJlbW90ZU9iamVjdCwgaGludHMtPmFzT2JqZWN0KCkpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYWE5MWViMWJhZmMxNWQwMTg2MTc4MGEwNGY2
ZTZjMjA3ZGZhMTRiZi4uNjEzNGQ3YzM4MTBiYzRkNDhiNDdkNmE0MjNhOTcwNTFkNWJjZDcxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5uZXR3b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYg
cmVzdWx0KQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dp
dGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZl
c3Q+PiYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1h
bmlmZXN0Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZl
c3Q+OjpjcmVhdGUoKTsKIAogICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2VBZ2VudC0+bWFp
bkZyYW1lKCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1haW5GcmFtZSkpIHsKQEAgLTEwOCw3ICsx
MDgsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0
aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6Q2FjaGVJbmZvIGluZm8gPSBob3N0LT5hcHBsaWNhdGlvbkNhY2hlSW5mbygpOwogICAg
ICAgICBTdHJpbmcgbWFuaWZlc3RVUkwgPSBpbmZvLm1fbWFuaWZlc3Quc3RyaW5nKCk7CiAgICAg
ICAgIGlmICghbWFuaWZlc3RVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+
IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVX
aXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+IHZhbHVlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0
ZSgpCiAgICAgICAgICAgICAgICAgLnNldEZyYW1lSWQobV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJh
bWUpKQogICAgICAgICAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAg
ICAgICAgICAgICAuc2V0U3RhdHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC0+c3RhdHVzKCkpKTsK
QEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
Z2V0TWFuaWZlc3RGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbgogICAgICptYW5pZmVz
dFVSTCA9IGluZm8ubV9tYW5pZmVzdC5zdHJpbmcoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNh
dGlvbkNhY2hlKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxp
Y2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6
OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQogewogICAgIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKGVycm9y
U3RyaW5nLCBmcmFtZUlkKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpAQCAtMTUxLDkgKzE1
MSw5IEBAIHZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlv
bkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqIGVyCiAgICAgYXBwbGljYXRpb25DYWNoZSA9IGJ1
aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShyZXNvdXJjZXMsIGluZm8pOwogfQogCi1QYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGU+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JB
cHBsaWNhdGlvbkNhY2hlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9M
aXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzLCBjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6Q2FjaGVJbmZvJiBhcHBsaWNhdGlvbkNhY2hlSW5mbykKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29u
c3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZXMsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mIGFwcGxp
Y2F0aW9uQ2FjaGVJbmZvKQogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKQorICAgIHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlOjpj
cmVhdGUoKQogICAgICAgICAuc2V0TWFuaWZlc3RVUkwoYXBwbGljYXRpb25DYWNoZUluZm8ubV9t
YW5pZmVzdC5zdHJpbmcoKSkKICAgICAgICAgLnNldFNpemUoYXBwbGljYXRpb25DYWNoZUluZm8u
bV9zaXplKQogICAgICAgICAuc2V0Q3JlYXRpb25UaW1lKGFwcGxpY2F0aW9uQ2FjaGVJbmZvLm1f
Y3JlYXRpb25UaW1lKQpAQCAtMTYyLDkgKzE2Miw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9y
CiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojpi
dWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYgYXBwbGljYXRpb25DYWNoZVJlc291cmNlcykKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
cyhjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYgYXBwbGljYXRp
b25DYWNoZVJlc291cmNlcykKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPj4gcmVzb3VyY2VzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT4+IHJlc291cmNlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZT46OmNyZWF0ZSgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiByZXNvdXJjZUluZm8gOiBh
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQogICAgICAgICByZXNvdXJjZXMtPmFkZEl0ZW0oYnVp
bGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UocmVzb3VyY2VJbmZvKSk7CkBAIC0x
NzIsNyArMTcyLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2gKICAgICByZXR1cm4gcmVzb3Vy
Y2VzOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJiByZXNvdXJjZUluZm8pCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3Vy
Y2VJbmZvJiByZXNvdXJjZUluZm8pCiB7CiAgICAgU3RyaW5nQnVpbGRlciB0eXBlczsKIApAQCAt
MTkxLDcgKzE5MSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBJCiAgICAgaWYgKHJlc291cmNl
SW5mby5tX2lzRXhwbGljaXQpCiAgICAgICAgIHR5cGVzLmFwcGVuZExpdGVyYWwoIkV4cGxpY2l0
ICIpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgp
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNh
dGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRVcmwocmVzb3VyY2VJbmZvLm1fcmVzb3VyY2Uuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRTaXpl
KHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VJbmZvLm1fc2l6ZSkpCiAgICAgICAgIC5zZXRUeXBl
KHR5cGVzLnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IGE5Yzc2NDI4ODcxMjVk
N2NiNzBkYTUwYTkyNDU5NzE2MWYzZjhkMWYuLmFlOTRkMDIxNDdkYTIzMjIzOWUxOTgxZGZlZWQw
YjY4NzVlY2JmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTYyLDE0ICs2MiwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1l
c1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVX
aXRoTWFuaWZlc3Q+PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJh
bWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhN
YW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRNYW5pZmVz
dEZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1h
bmlmZXN0VVJMKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNo
ZUZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4m
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1l
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25D
YWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUlu
Zm9MaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUlu
Zm8mKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25z
dCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7CisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKIAogICAgIERvY3Vt
ZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhEb2N1bWVudExvYWRlcihFcnJvclN0cmluZyosIFN0
cmluZyBmcmFtZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKaW5kZXggMTY5ZDM3Y2IyZTI3NGU2MWViMDEyZjQyNzExMDk4OWJlOWUxNDMw
Ny4uMjFlOTk1NWFkOTYzM2U1MTI1NDU2MDc2NmZkMjBjNWI2NDg3MzQ5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00Myw3ICs0Myw3
IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRP
TUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlByb3RvY29sVHlw
ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTmFtZWRG
bG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTYwMCw3ICs2MDAsNyBAQCBi
b29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQs
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5o
ZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQ
c2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHls
ZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBw
c2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmll
cykKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBu
b2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTYxMywxMSArNjEzLDExIEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vCiAKICAgICAvLyBQc2V1ZG8gZWxlbWVudHMuCiAgICAgaWYgKCFpbmNs
dWRlUHNldWRvIHx8ICppbmNsdWRlUHNldWRvKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lk
TWF0Y2hlcz4+IHBzZXVkb0VsZW1lbnRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4gcHNldWRvRWxlbWVudHMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hl
cz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1RfUFVC
TElDX1BTRVVET0lEOyBwc2V1ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQ7IHBz
ZXVkb0lkID0gc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKICAgICAgICAg
ICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9y
RWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwog
ICAgICAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPiBt
YXRjaGVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM6OmNy
ZWF0ZSgpCisgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
UHNldWRvSWRNYXRjaGVzPiBtYXRjaGVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1
ZG9JZE1hdGNoZXM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRQc2V1ZG9JZChz
dGF0aWNfY2FzdDxpbnQ+KHBzZXVkb0lkKSkKICAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNo
ZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChtYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2
ZXIsIGVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbSht
YXRjaGVzLnJlbGVhc2UoKSk7CkBAIC02MjksMTIgKzYyOSwxMiBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBubwogCiAgICAgLy8gSW5oZXJpdGVkIHN0eWxlcy4KICAgICBpZiAoIWluY2x1ZGVJbmhl
cml0ZWQgfHwgKmluY2x1ZGVJbmhlcml0ZWQpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVk
U3R5bGVFbnRyeT4+IGVudHJpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+IGVudHJpZXMgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50
cnk+OjpjcmVhdGUoKTsKICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQpIHsKICAgICAg
ICAgICAgIFN0eWxlUmVzb2x2ZXImIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50
LT5kb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgICAgIGF1dG8gcGFy
ZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVu
dChwYXJlbnRFbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7Ci0gICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5
PiBlbnRyeSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJ
bmhlcml0ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVk
Q1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMs
IHN0eWxlUmVzb2x2ZXIsIHBhcmVudEVsZW1lbnQpKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRF
bGVtZW50LT5zdHlsZSgpICYmIHBhcmVudEVsZW1lbnQtPnN0eWxlKCktPmxlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBzdHlsZVNo
ZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHBhcmVudEVsZW1lbnQpOwpAQCAtNjUwLDcgKzY1
MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxp
bmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzU3R5bGUp
CiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9k
ZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC02NjEsMTEgKzY2MSwxMSBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IG5vZAogICAgICAgICByZXR1cm47CiAKICAgICBpbmxpbmVTdHlsZSA9IHN0eWxl
U2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoZWxlbWVudC0+c3R5bGUoKSk7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGF0dHJpYnV0ZXMgPSBidWls
ZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0
cmlidXRlc1N0eWxlKGVsZW1lbnQpOwogICAgIGF0dHJpYnV0ZXNTdHlsZSA9IGF0dHJpYnV0ZXMg
PyBhdHRyaWJ1dGVzLnJlbGVhc2UoKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+
PiYgc3R5bGUpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0
cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC02NzYsOSArNjc2LDkgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFy
cmF5Rm9yQ29tcHV0ZWRTdHlsZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRB
bGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
PiYgc3R5bGVJbmZvcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZUluZm9zKQogewot
ICAgIHN0eWxlSW5mb3MgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBz
dHlsZUluZm9zID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPERvY3Vt
ZW50Kj4gZG9jdW1lbnRzID0gbV9kb21BZ2VudC0+ZG9jdW1lbnRzKCk7CiAgICAgZm9yIChWZWN0
b3I8RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBkb2N1bWVudHMuYmVnaW4oKTsgaXQgIT0gZG9j
dW1lbnRzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFN0eWxlU2hlZXRMaXN0KiBsaXN0ID0gKCpp
dCktPnN0eWxlU2hlZXRzKCk7CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnUKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHls
ZVNoZWV0T2JqZWN0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHN0eWxlU2hlZXRP
YmplY3QpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9
IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVldElkKTsKICAgICBp
ZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCkBAIC03MTksNyArNzE5LDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJv
clN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBm
dWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JD
U1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNF
bXB0eSgpKTsKQEAgLTczNSw3ICs3MzUsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRT
dHlsZVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcAogICAg
ICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBp
bnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9w
ZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0
b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQu
aXNFbXB0eSgpKTsKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpz
ZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SQog
ICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQs
IGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2Fi
bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQog
ewogICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VS
VCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwpAQCAtNzY3LDcgKzc2Nyw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgUmVmUHRyPEluCiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcoZWMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0
b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgZnVsbFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsUnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQogewogICAg
IEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFJ1bGVJZCk7CiAgICAgQVNTRVJUKCFjb21w
b3VuZElkLmlzRW1wdHkoKSk7CkBAIC03ODQsNyArNzg0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEkKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmlu
ZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3Vs
dCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKICAgICBO
b2RlKiBub2RlID0gbV9kb21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgY29udGV4dE5v
ZGVJZCk7CiAgICAgaWYgKCFub2RlKQpAQCAtODEwLDEyICs4MTAsMTIgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBj
b250ZXh0Tm9kZUkKICAgICByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVj
dEZvclJ1bGUocnVsZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRl
ZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYg
Y3NzUHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1By
b3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGll
cykKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiBwcm9wZXJ0aWVzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eUluZm8+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiBwcm9wZXJ0
aWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NQcm9wZXJ0eUluZm8+OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RDU1NQ
cm9wZXJ0eTsgaSA8PSBsYXN0Q1NTUHJvcGVydHk7ICsraSkgewogICAgICAgICBDU1NQcm9wZXJ0
eUlEIGlkID0gY29udmVydFRvQ1NTUHJvcGVydHlJRChpKTsKLSAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPiBwcm9wZXJ0eSA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvOjpjcmVhdGUoKQorICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3Bl
cnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm86OmNyZWF0ZSgp
CiAgICAgICAgICAgICAuc2V0TmFtZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKIAogICAg
ICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRG
b3JQcm9wZXJ0eShpZCk7CkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0
b3IKICAgICAgICAgICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0ocHJvcGVydHkucmVsZWFzZSgpKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBsb25naGFuZHMgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGxvbmdoYW5kcyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2opIHsKICAgICAgICAgICAgIENTU1Byb3Bl
cnR5SUQgbG9uZ2hhbmRJRCA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbal07CiAgICAgICAgICAg
ICBsb25naGFuZHMtPmFkZEl0ZW0oZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGxvbmdoYW5kSUQpKTsK
QEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0
YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogICAgIGVsZW1lbnQt
PmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVk
Rmxvdz4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xs
ZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpO
YW1lZEZsb3c+PiYgcmVzdWx0KQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9tQWdl
bnQtPmFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCk7CiAgICAgaWYg
KCFkb2N1bWVudCkKQEAgLTg2Myw3ICs4NjMsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvYwog
ICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsK
IAogICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9
IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1l
ZEZsb3c+PiBuYW1lZEZsb3dzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1l
ZEZsb3c+PiBuYW1lZEZsb3dzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoVmVjdG9y
PFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+Pjo6aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9y
LmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NWZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIG5h
bWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIGl0
LT5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKQEAgLTg4MCw3ICs4ODAsNyBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0
eWxlU2hlZXQoRWxlbQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgU3Ry
aW5nIG5ld1N0eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsr
KTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gaW5z
cGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3Jl
YXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhp
cyk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGlu
c3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNy
ZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVtZW50LCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIsIHRoaXMp
OwogICAgICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNoZWV0SWQs
IGluc3BlY3RvclN0eWxlU2hlZXQpOwogICAgICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hl
ZXQuc2V0KGVsZW1lbnQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwogICAgICAgICByZXR1cm4gaW5z
cGVjdG9yU3R5bGVTaGVldC5nZXQoKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBpbnQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlU2hlZXRIZWFkZXI+KiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpjb2xs
ZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVy
PiogcmVzdWx0KQogewogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hl
ZXQgPSBiaW5kU3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVl
dCkpOwogICAgIHJlc3VsdC0+YWRkSXRlbShpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVj
dEZvclN0eWxlU2hlZXRJbmZvKCkpOwpAQCAtOTgzLDcgKzk4Myw3IEBAIEluc3BlY3RvclN0eWxl
U2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojp2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50
KiBkb2N1bWVuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIGlkID0gU3Ry
aW5nOjpudW1iZXIobV9sYXN0U3R5bGVTaGVldElkKyspOwotICAgIGluc3BlY3RvclN0eWxlU2hl
ZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCks
IGlkLCBjc3NTdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hl
ZXRPcmlnaW46Okluc3BlY3RvciwgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5n
KGRvY3VtZW50KSwgdGhpcyk7CisgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0
eWxlU2hlZXQ6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgaWQsIGNzc1N0eWxlU2hl
ZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9y
LCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsK
ICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChpZCwgaW5zcGVjdG9yU3R5bGVTaGVl
dCk7CiAgICAgbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChjc3NTdHls
ZVNoZWV0LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JT
dHlsZVNoZWV0LnNldChkb2N1bWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CkBAIC0xMDAwLDIy
ICsxMDAwLDIyIEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojphc3Nl
cnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9yCiAgICAgcmV0dXJuIGl0LT52YWx1
ZS5nZXQoKTsKIH0KIAotSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0
eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQorSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NT
U3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewot
ICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4g
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXI7
CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKICAg
ICBpZiAocGFnZVN0eWxlU2hlZXQgJiYgIXBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBw
YWdlU3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKSkKLSAgICAgICAgb3JpZ2luID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQ7CisgICAg
ICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
VXNlckFnZW50OwogICAgIGVsc2UgaWYgKHBhZ2VTdHlsZVNoZWV0ICYmIHBhZ2VTdHlsZVNoZWV0
LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkg
PT0gIiNkb2N1bWVudCIpCi0gICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlcjsKKyAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyOwogICAgIGVsc2UgewogICAg
ICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXIg
PSB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KG93bmVyRG9jdW1lbnQsIGZhbHNlKTsKICAgICAgICAg
aWYgKHZpYUluc3BlY3RvclN0eWxlU2hlZXRGb3JPd25lciAmJiBwYWdlU3R5bGVTaGVldCA9PSB2
aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXItPnBhZ2VTdHlsZVNoZWV0KCkpCi0gICAgICAg
ICAgICBvcmlnaW4gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW46Okluc3BlY3RvcjsKKyAgICAgICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yOwogICAgIH0KICAgICByZXR1cm4gb3Jp
Z2luOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxl
UnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RG
b3JSdWxlKFN0eWxlUnVsZSogc3R5bGVSdWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
KQogewogICAgIGlmICghc3R5bGVSdWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEw
MjksNyArMTAyOSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGCiAgICAgcmV0dXJuIGluc3Bl
Y3RvclN0eWxlU2hlZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUo
Y3Nzb21XcmFwcGVyKSA6IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JS
dWxlKENTU1N0eWxlUnVsZSogcnVsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0
eWxlUnVsZSogcnVsZSkKIHsKICAgICBpZiAoIXJ1bGUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTAzOSwxNSArMTAzOSwxNSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0RgogICAgIHJl
dHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmpl
Y3RGb3JSdWxlKHJ1bGUpIDogbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxl
TGlzdCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JS
dWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+
IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiByZXN1bHQg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1J1bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQogICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlTGlz
dC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxl
ID0gYXNDU1NTdHlsZVJ1bGUocnVsZUxpc3QtPml0ZW0oaSkpOwotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmpl
Y3RGb3JSdWxlKHJ1bGUpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwogICAgICAg
ICBpZiAoIXJ1bGVPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVzdWx0
LT5hZGRJdGVtKHJ1bGVPYmplY3QpOwpAQCAtMTA1NSwxOCArMTA1NSwxOCBAQCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4+CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRS
dWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZXMsIFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVs
ZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3Qo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1
bGVNYXRjaD4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1h
dGNoPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtYXRjaGVkUnVsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFtYXRjaGVk
UnVsZXNbaV0tPmlzU3R5bGVSdWxlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
U3R5bGVSdWxlKiBtYXRjaGVkU3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4obWF0
Y2hlZFJ1bGVzW2ldLmdldCgpKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTUnVsZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVk
U3R5bGVSdWxlLCBzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUnVsZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRj
aGVkU3R5bGVSdWxlLCBzdHlsZVJlc29sdmVyKTsKICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxpbnQ+PiBtYXRjaGluZ1NlbGVjdG9ycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pj4gbWF0Y2hpbmdTZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3Rvckxpc3QgPSBtYXRjaGVkU3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAg
bG9uZyBpbmRleCA9IDA7CiAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
ID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9y
TGlzdDo6bmV4dChzZWxlY3RvcikpIHsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpSdWxlTWF0Y2g+CiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdTZWxlY3RvcnMtPmFkZEl0ZW0o
aW5kZXgpOwogICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgfQotICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+IG1hdGNoID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4gbWF0Y2ggPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaDo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRSdWxlKHJ1
bGVPYmplY3QpCiAgICAgICAgICAgICAuc2V0TWF0Y2hpbmdTZWxlY3RvcnMobWF0Y2hpbmdTZWxl
Y3RvcnMpOwogICAgICAgICByZXN1bHQtPmFkZEl0ZW0obWF0Y2gpOwpAQCAtMTA4NCw3ICsxMDg0
LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2Uo
KTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVu
dCogZWxlbWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTAxLDIyICsxMTAxLDIyIEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0
eWxlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiByZWdpb25MaXN0LCBpbnQgZG9jdW1lbnROb2RlSWQpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4g
SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9k
ZUlkKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj46OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lvbkxpc3QtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQgcmVn
aW9uT3ZlcnNldDsKKyAgICAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OlJl
Z2lvbk92ZXJzZXQgcmVnaW9uT3ZlcnNldDsKIAogICAgICAgICBzd2l0Y2ggKHRvRWxlbWVudChy
ZWdpb25MaXN0LT5pdGVtKGkpKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsKICAgICAgICAgY2Fz
ZSBSZWdpb25GaXQ6Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkZpdDsKKyAgICAgICAgICAgIHJl
Z2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3Zl
cnNldDo6Rml0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVnaW9uRW1wdHk6
Ci0gICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVtcHR5OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNl
dCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbXB0
eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6Ci0gICAg
ICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdp
b246OlJlZ2lvbk92ZXJzZXQ6Ok92ZXJzZXQ7CisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6Ok92ZXJzZXQ7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6CiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTExMjUsNyArMTEyNSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdp
b24+PiBJCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSZWdpb246OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChy
ZWdpb25PdmVyc2V0KQogICAgICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3Vz
bHkgYXNzZXJ0ZWQKICAgICAgICAgICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVU
b0Zyb250ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgcmVnaW9uTGlzdC0+aXRlbShp
KSkpOwpAQCAtMTEzNiwxNyArMTEzNiwxNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gSQogICAg
IHJldHVybiByZWdpb25zLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3
ZWJraXROYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyog
d2Via2l0TmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCiB7CiAgICAgUmVmUHRyPE5vZGVM
aXN0PiBjb250ZW50TGlzdCA9IHdlYmtpdE5hbWVkRmxvdy0+Z2V0Q29udGVudCgpOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBjb250ZW50ID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGNvbnRlbnQgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b250ZW50TGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3
YXMgcHJldmlvdXNseSBhc3NlcnRlZAogICAgICAgICBjb250ZW50LT5hZGRJdGVtKG1fZG9tQWdl
bnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIGNvbnRl
bnRMaXN0LT5pdGVtKGkpKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBuYW1lZEZsb3cgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdzo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpOYW1lZEZsb3c+IG5hbWVkRmxvdyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
TmFtZWRGbG93OjpjcmVhdGUoKQogICAgICAgICAuc2V0RG9jdW1lbnROb2RlSWQoZG9jdW1lbnRO
b2RlSWQpCiAgICAgICAgIC5zZXROYW1lKHdlYmtpdE5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygp
KQogICAgICAgICAuc2V0T3ZlcnNldCh3ZWJraXROYW1lZEZsb3ctPm92ZXJzZXQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggMTc1NWQ3MjBj
MzE1ZTJlZDhjMWRhNjA0ZjIwNWY2YmJkZTlkMDE1ZS4uZWRjYWYxNzJlNTI0ZDZiOWE4MjFhZjIx
N2UyZGFkYTc0NjQwOGEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKQEAgLTEwOSwyMSArMTA5LDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Z2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cq
LCBOb2RlKiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0
cik7CiAgICAgdm9pZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1l
bnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVT
dHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRy
aWJ1dGVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBj
b25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hl
ZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9zKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0Qm9keT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldENvbXB1
dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRT
dHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBz
ZXVkb0lkTWF0Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVz
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJp
bmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdHls
ZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJp
bmcqIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hlZXRUZXh0
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYg
dGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGNv
bnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRl
eHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92
ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBy
ZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQs
IGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250ZXh0Tm9kZUlk
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3Vw
cG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5m
bz4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHls
ZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVy
dHlUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9v
bCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYg
cmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JT
dHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlk
LCBpbnQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5vZGVJZCwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENT
U1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgZm9y
Y2VkUHNldWRvQ2xhc3Nlcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxv
d0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5h
bWVkRmxvdz4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZs
b3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZs
b3c+PiYgcmVzdWx0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBTdHlsZVNoZWV0
QWN0aW9uOwpAQCAtMTQ0LDIwICsxNDQsMjAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVt
ZW50KTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
KTsKICAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsK
LSAgICB2b2lkIGNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNo
ZWV0SGVhZGVyPiopOworICAgIHZvaWQgY29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQq
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1N0eWxlU2hlZXRIZWFkZXI+Kik7CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBiaW5kU3R5
bGVTaGVldChDU1NTdHlsZVNoZWV0Kik7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5z
cGVjdG9yU3R5bGVTaGVldChEb2N1bWVudCosIGJvb2wgY3JlYXRlSWZBYnNlbnQpOwogICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGFzc2VydFN0eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYpOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbiBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3Vt
ZW50KiBvd25lckRvY3VtZW50KTsKLQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVS
ZXNvbHZlciYpOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKLSAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25z
dCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsK
LSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1
aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uPj4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJv
clN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CisgICAgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdpbihDU1NT
dHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOworCisg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2Jq
ZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBTdHlsZVJlc29sdmVyJik7CisgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NT
dHlsZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChD
U1NSdWxlTGlzdCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hl
ZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVy
JiwgRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyosIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVy
cm9yU3RyaW5nKiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAogICAg
IC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCopIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYjJjYjRj
NjQwZDY1ZWY1NDM1ODM2ZmZmNTdlM2U0M2M3MDdmNjFjNy4uY2I3ZTdkYTVkZDJiM2M3YzlmMTkz
YzA5NjA4OTE0YWUxN2EyYmY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6
On5JbnNwZWN0b3JET01BZ2VudCgpCiAgICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zvck5vZGUpOwog
fQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CkBAIC00MjIsNyArNDIyLDcgQEAgRWxl
bWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KQordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiYgcm9vdCkKIHsKICAgICBtX2RvY3VtZW50
UmVxdWVzdGVkID0gdHJ1ZTsKIApAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkLCBpbnQgZGVwdGgpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBi
dWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2Rl
LCBkZXB0aCwgbm9kZU1hcCk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9k
ZXMobm9kZUlkLCBjaGlsZHJlbi5yZWxlYXNlKCkpOwogfQogCkBAIC01NDAsNyArNTQwLDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIGNvbnMKICAgICAgICAgKmVsZW1lbnRJZCA9IHB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQoZWxlbWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PGludD4+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9y
QWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RvcnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgcmVzdWx0
KQogewogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwog
ICAgIGlmICghbm9kZSkKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
YwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbm9kZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVzLT5pdGVtKGkpKSk7CkBAIC01ODgsNyArNTg4LDcgQEAg
aW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVU
b1B1c2gpCiAgICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVRv
SWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKICAgICAg
ICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwot
ICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7
CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5nbGlu
Z01hcCkpOwogICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMo
MCwgY2hpbGRyZW4pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04MDksOSArODA5LDkgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgY29uc3QKICAgICBtX2RvbUVkaXRvci0+cmVwbGFjZVdob2xlVGV4dCh0
b1RleHQobm9kZSksIHZhbHVlLCBlcnJvclN0cmluZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlz
dGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVu
dExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0Fy
cmF5KQogewotICAgIGxpc3RlbmVyc0FycmF5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPjo6Y3JlYXRlKCk7
CisgICAgbGlzdGVuZXJzQXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+OjpjcmVhdGUoKTsKICAgICBOb2RlKiBu
b2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpnZXRFdmVudExpc3RlbmVycyhOb2RlKiBub2RlLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+
JgogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+
JiBheFByb3BlcnRpZXMpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBY2Nlc3NpYmlsaXR5
UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4m
IGF4UHJvcGVydGllcykKIHsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmlu
Zywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCkBAIC05MjYsNyArOTI2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgd2gKICAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzVmVjdG9yLnNpemUoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGlu
dCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIG5v
ZGVJZHMpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwg
aW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgbm9k
ZUlkcykKIHsKICAgICBTZWFyY2hSZXN1bHRzOjppdGVyYXRvciBpdCA9IG1fc2VhcmNoUmVzdWx0
cy5maW5kKHNlYXJjaElkKTsKICAgICBpZiAoaXQgPT0gbV9zZWFyY2hSZXN1bHRzLmVuZCgpKSB7
CkBAIC05NDAsNyArOTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVz
dWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxpbnQ+OjpjcmVhdGUoKTsKKyAgICBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5k
ZXg7ICsraSkKICAgICAgICAgbm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KChpdC0+dmFsdWUpW2ldLmdldCgpKSk7CiB9CkBAIC0xMTg2LDcgKzExODYsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50Ojpmb2N1cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQpCiAgICAgZWxlbWVudC0+Zm9jdXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KQogewogICAgIFN0cmluZyBvYmplY3RHcm91cE5h
bWUgPSBvYmplY3RHcm91cCA/ICpvYmplY3RHcm91cCA6ICIiOwogICAgIE5vZGUqIG5vZGUgPSBu
b2RlRm9ySWQobm9kZUlkKTsKQEAgLTExOTQsNyArMTE5NCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
Y29uc3QKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3Vu
ZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0ID0gcmVzb2x2ZU5vZGUobm9kZSwg
b2JqZWN0R3JvdXBOYW1lKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiBvYmplY3QgPSByZXNvbHZlTm9kZShub2RlLCBvYmplY3RHcm91cE5h
bWUpOwogICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJOb2RlIHdp
dGggZ2l2ZW4gaWQgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBkb2N1bWVudCI7CiAgICAgICAgIHJl
dHVybjsKQEAgLTEyMDIsNyArMTIwMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29s
dmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICBy
ZXN1bHQgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0
ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKIHsK
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlk
KTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBzdGF0aWMgU3RyaW5n
IGRvY3VtZW50QmFzZVVSTFN0cmluZyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIGRv
Y3VtZW50LT5jb21wbGV0ZVVSTCgiIikuc3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JOb2RlKE5vZGUqIG5vZGUsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1h
cCogbm9kZXNNYXApCiB7CiAgICAgaW50IGlkID0gYmluZChub2RlLCBub2Rlc01hcCk7CiAgICAg
U3RyaW5nIG5vZGVOYW1lOwpAQCAtMTI2Miw3ICsxMjYyLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvck4KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006
Ok5vZGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXROb2RlSWQoaWQpCiAgICAgICAgIC5zZXROb2RlVHlwZShzdGF0aWNfY2FzdDxpbnQ+
KG5vZGUtPm5vZGVUeXBlKCkpKQogICAgICAgICAuc2V0Tm9kZU5hbWUobm9kZU5hbWUpCkBAIC0x
MjcyLDcgKzEyNzIsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6
Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTgogICAgIGlmIChub2RlLT5p
c0NvbnRhaW5lck5vZGUoKSkgewogICAgICAgICBpbnQgbm9kZUNvdW50ID0gaW5uZXJDaGlsZE5v
ZGVDb3VudChub2RlKTsKICAgICAgICAgdmFsdWUtPnNldENoaWxkTm9kZUNvdW50KG5vZGVDb3Vu
dCk7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250
YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZXNNYXApOworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4g
Y2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5v
ZGVzTWFwKTsKICAgICAgICAgaWYgKGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAg
ICB2YWx1ZS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKICAgICB9CkBAIC0xMjkx
LDcgKzEyOTEsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTgogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50LT5zaGFkb3dSb290KCkpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpET006Ok5vZGU+PiBzaGFkb3dSb290cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IHNoYWRvd1Jvb3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgICAg
ICAgICBzaGFkb3dSb290cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUocm9vdCwgMCwgbm9k
ZXNNYXApKTsKICAgICAgICAgICAgIHZhbHVlLT5zZXRTaGFkb3dSb290cyhzaGFkb3dSb290cyk7
CiAgICAgICAgIH0KQEAgLTEzMjksOSArMTMyOSw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JO
CiAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJh
eUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFy
cmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gYXR0cmlidXRlc1ZhbHVlID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGF0dHJpYnV0ZXNWYWx1ZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIC8vIEdv
IHRocm91Z2ggYWxsIGF0dHJpYnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgogICAgIGlmICghZWxl
bWVudC0+aGFzQXR0cmlidXRlcygpKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJl
bGVhc2UoKTsKQEAgLTEzNDMsOSArMTM0Myw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGCiAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihO
b2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVu
KE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4+IGNoaWxkcmVuID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKGRlcHRoID09IDApIHsKICAg
ICAgICAgLy8gU3BlY2lhbC1jYXNlIHRoZSBvbmx5IHRleHQgY2hpbGQgLSBwcmV0ZW5kIHRoYXQg
Y29udGFpbmVyJ3MgY2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZC4KICAgICAgICAgTm9kZSog
Zmlyc3RDaGlsZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOwpAQCAtMTM2Nyw3ICsxMzY3LDcg
QEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpET006Ok5vZGU+PiBJbnMKICAgICByZXR1cm4gY2hpbGRyZW4ucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0
ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwSWQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0
ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwSWQpCiB7CiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIgPSBy
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5saXN0ZW5lcjsKIApAQCAtMTM5NSw3ICsxMzk1LDcgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE8KICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IHZhbHVlID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IHZhbHVlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0
VHlwZShldmVudFR5cGUpCiAgICAgICAgIC5zZXRVc2VDYXB0dXJlKHJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLnVzZUNhcHR1cmUpCiAgICAgICAgIC5zZXRJc0F0dHJpYnV0ZShldmVudExpc3RlbmVy
LT5pc0F0dHJpYnV0ZSgpKQpAQCAtMTQwNyw3ICsxNDA3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE8KICAgICAgICAgICAgIHZhbHVlLT5zZXRIYW5kbGVyKGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QoRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGhhbmRsZXIpLCAqb2Jq
ZWN0R3JvdXBJZCkpOwogICAgIH0KICAgICBpZiAoIXNjcmlwdElELmlzTnVsbCgpKSB7Ci0gICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxv
Y2F0aW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVh
dGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0
aW9uPiBsb2NhdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6
Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRTY3JpcHRJZChzY3JpcHRJRCkKICAgICAgICAgICAg
IC5zZXRMaW5lTnVtYmVyKGxpbmVOdW1iZXIpOwogICAgICAgICB2YWx1ZS0+c2V0TG9jYXRpb24o
bG9jYXRpb24ucmVsZWFzZSgpKTsKQEAgLTE0MTcsMTQgKzE0MTcsMTQgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE8KICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwogfQogICAgIAotdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4T2JqZWN0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8aW50Pj4mIGNoaWxkTm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiBheE9iamVjdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiBj
aGlsZE5vZGVJZHMpCiB7CiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBheE9iamVjdC0+Y2hp
bGRyZW4oKTsKICAgICBpZiAoIWNoaWxkcmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmICghY2hpbGROb2RlSWRzKQotICAgICAgICBjaGlsZE5vZGVJZHMgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgY2hpbGROb2Rl
SWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZE9iamVjdCA6IGNoaWxkcmVuKSB7CiAgICAgICAgIGlm
IChOb2RlKiBjaGlsZE5vZGUgPSBjaGlsZE9iamVjdC0+bm9kZSgpKQpAQCAtMTQzNCw3ICsxNDM0
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJl
bihQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmoKICAgICB9CiB9CiAgICAgCi1QYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKiBub2RlKQor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0
aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllcyhOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKICAgICBpZiAoIW5vZGUpCkBA
IC0xNDQ1LDMxICsxNDQ1LDMxIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iCiAKICAgICBOb2Rl
KiBhY3RpdmVEZXNjZW5kYW50Tm9kZSA9IG51bGxwdHI7CiAgICAgYm9vbCBidXN5ID0gZmFsc2U7
Ci0gICAgVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQg
Y2hlY2tlZCA9IFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVj
a2VkOjpGYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50
Pj4gY2hpbGROb2RlSWRzOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxpbnQ+PiBjb250cm9sbGVkTm9kZUlkczsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpGYWxzZTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gY2hpbGROb2RlSWRzOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjb250cm9sbGVkTm9k
ZUlkczsKICAgICBib29sIGV4aXN0cyA9IGZhbHNlOwogICAgIGJvb2wgZXhwYW5kZWQgPSBmYWxz
ZTsKICAgICBib29sIGRpc2FibGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PGludD4+IGZsb3dlZE5vZGVJZHM7CisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PGludD4+IGZsb3dlZE5vZGVJZHM7CiAgICAgYm9vbCBmb2N1c2Vk
ID0gZmFsc2U7CiAgICAgYm9vbCBpZ25vcmVkID0gdHJ1ZTsKICAgICBib29sIGlnbm9yZWRCeURl
ZmF1bHQgPSBmYWxzZTsKLSAgICBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllczo6SW52YWxpZCBpbnZhbGlkID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXM6OkludmFsaWQ6OkZhbHNlOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQgaW52YWxpZCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQ6OkZhbHNlOwogICAg
IGJvb2wgaGlkZGVuID0gZmFsc2U7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIGJvb2wgbGl2ZVJl
Z2lvbkF0b21pYyA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+PiBsaXZlUmVnaW9uUmVsZXZhbnQ7Ci0gICAgVHlwZUJ1aWxkZXI6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkxpdmVSZWdpb25TdGF0dXMgbGl2ZVJlZ2lvblN0YXR1
cyA9IFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZlUmVnaW9u
U3RhdHVzOjpPZmY7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+IGxpdmVSZWdpb25SZWxldmFudDsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFj
Y2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZlUmVnaW9uU3RhdHVzIGxpdmVSZWdpb25TdGF0dXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZl
UmVnaW9uU3RhdHVzOjpPZmY7CiAgICAgTm9kZSogbW91c2VFdmVudE5vZGUgPSBudWxscHRyOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBvd25lZE5vZGVJ
ZHM7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IG93bmVkTm9k
ZUlkczsKICAgICBOb2RlKiBwYXJlbnROb2RlID0gbnVsbHB0cjsKICAgICBib29sIHByZXNzZWQg
PSBmYWxzZTsKICAgICBib29sIHJlYWRvbmx5ID0gZmFsc2U7CiAgICAgYm9vbCByZXF1aXJlZCA9
IGZhbHNlOwogICAgIFN0cmluZyByb2xlOwogICAgIGJvb2wgc2VsZWN0ZWQgPSBmYWxzZTsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gc2VsZWN0ZWRDaGls
ZE5vZGVJZHM7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IHNl
bGVjdGVkQ2hpbGROb2RlSWRzOwogICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkID0gZmFsc2U7CiAg
ICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0xpdmVS
ZWdpb24gPSBmYWxzZTsKQEAgLTE0OTQsMTEgKzE0OTQsMTEgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2IKICAgICAgICAgICAgIGlmIChzdXBwb3J0c0NoZWNrZWQpIHsKICAgICAgICAgICAgICAg
ICBpbnQgY2hlY2tWYWx1ZSA9IGF4T2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpOyAvLyBF
bGVtZW50IHVzaW5nIGFyaWEtY2hlY2tlZC4KICAgICAgICAgICAgICAgICBpZiAoY2hlY2tWYWx1
ZSA9PSAxKQotICAgICAgICAgICAgICAgICAgICBjaGVja2VkID0gVHlwZUJ1aWxkZXI6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6OlRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzOjpDaGVja2VkOjpUcnVlOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrVmFs
dWUgPT0gMikKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IFR5cGVCdWlsZGVyOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpNaXhlZDsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tlZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXM6OkNoZWNrZWQ6Ok1peGVkOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF4T2Jq
ZWN0LT5pc0NoZWNrZWQoKSkgLy8gTmF0aXZlIGNoZWNrYm94LgotICAgICAgICAgICAgICAgICAg
ICBjaGVja2VkID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNo
ZWNrZWQ6OlRydWU7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpUcnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBwcm9jZXNzQWNjZXNzaWJpbGl0
eUNoaWxkcmVuKGF4T2JqZWN0LCBjaGlsZE5vZGVJZHMpOwpAQCAtMTUwNyw3ICsxNTA3LDcgQEAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+
IGNvbnRyb2xsZWRFbGVtZW50czsKICAgICAgICAgICAgICAgICBheE9iamVjdC0+ZWxlbWVudHNG
cm9tQXR0cmlidXRlKGNvbnRyb2xsZWRFbGVtZW50cywgYXJpYV9jb250cm9sc0F0dHIpOwogICAg
ICAgICAgICAgICAgIGlmIChjb250cm9sbGVkRWxlbWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRyb2xsZWROb2RlSWRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWROb2RlSWRz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAoRWxlbWVudCogY29udHJvbGxlZEVsZW1lbnQgOiBjb250cm9sbGVkRWxl
bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVkTm9kZUlkcy0+YWRkSXRl
bShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGNvbnRyb2xsZWRFbGVtZW50KSk7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMTUyNCw3ICsxNTI0LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAg
ICAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGZsb3dlZEVsZW1lbnRzOwogICAgICAgICAg
ICAgICAgIGF4T2JqZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUoZmxvd2VkRWxlbWVudHMsIGFy
aWFfZmxvd3RvQXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKGZsb3dlZEVsZW1lbnRzLnNpemUo
KSkgewotICAgICAgICAgICAgICAgICAgICBmbG93ZWROb2RlSWRzID0gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGZsb3dl
ZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChFbGVtZW50KiBmbG93ZWRFbGVtZW50IDogZmxvd2VkRWxl
bWVudHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBmbG93ZWROb2RlSWRzLT5hZGRJdGVtKHB1
c2hOb2RlUGF0aFRvRnJvbnRlbmQoZmxvd2VkRWxlbWVudCkpOwogICAgICAgICAgICAgICAgIH0K
QEAgLTE1NDEsMTMgKzE1NDEsMTMgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nl
c3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgU3RyaW5nIGludmFsaWRWYWx1ZSA9IGF4T2JqZWN0LT5pbnZhbGlk
U3RhdHVzKCk7CiAgICAgICAgICAgICBpZiAoaW52YWxpZFZhbHVlID09ICJmYWxzZSIpCi0gICAg
ICAgICAgICAgICAgaW52YWxpZCA9IFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzOjpJbnZhbGlkOjpGYWxzZTsKKyAgICAgICAgICAgICAgICBpbnZhbGlkID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6RmFs
c2U7CiAgICAgICAgICAgICBlbHNlIGlmIChpbnZhbGlkVmFsdWUgPT0gImdyYW1tYXIiKQotICAg
ICAgICAgICAgICAgIGludmFsaWQgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllczo6SW52YWxpZDo6R3JhbW1hcjsKKyAgICAgICAgICAgICAgICBpbnZhbGlkID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6
R3JhbW1hcjsKICAgICAgICAgICAgIGVsc2UgaWYgKGludmFsaWRWYWx1ZSA9PSAic3BlbGxpbmci
KQotICAgICAgICAgICAgICAgIGludmFsaWQgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmls
aXR5UHJvcGVydGllczo6SW52YWxpZDo6U3BlbGxpbmc7CisgICAgICAgICAgICAgICAgaW52YWxp
ZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6Oklu
dmFsaWQ6OlNwZWxsaW5nOwogICAgICAgICAgICAgZWxzZSAvLyBGdXR1cmUgdmVyc2lvbnMgb2Yg
QVJJQSBtYXkgYWxsb3cgYWRkaXRpb25hbCB0cnV0aHkgdmFsdWVzLiBFeC4gZm9ybWF0LCBvcmRl
ciwgb3Igc2l6ZS4KLSAgICAgICAgICAgICAgICBpbnZhbGlkID0gVHlwZUJ1aWxkZXI6OkRPTTo6
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQ6OlRydWU7CisgICAgICAgICAgICAgICAg
aW52YWxpZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM6OkludmFsaWQ6OlRydWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChheE9iamVj
dC0+aXNBUklBSGlkZGVuKCkgfHwgYXhPYmplY3QtPmlzRE9NSGlkZGVuKCkpCiAgICAgICAgICAg
ICAgICAgaGlkZGVuID0gdHJ1ZTsKQEAgLTE1NjEsMTAgKzE1NjEsMTAgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkT2IKICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50QXR0clZhbHVl
ID0gYXhPYmplY3QtPmFyaWFMaXZlUmVnaW9uUmVsZXZhbnQoKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWFyaWFSZWxldmFudEF0dHJWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFBhc3MgZW51bSB2YWx1ZXMgcmF0aGVyIHRoYW4gc3RyaW5ncyBvbmNlIHVu
YmxvY2tlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMzM3MTEKLSAgICAgICAgICAgICAgICAgICAg
U3RyaW5nIGFyaWFSZWxldmFudEFkZGl0aW9ucyA9IFR5cGVCdWlsZGVyOjpnZXRXZWJFbnVtQ29u
c3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OkFkZGl0aW9u
cyk7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRSZW1vdmFscyA9IFR5
cGVCdWlsZGVyOjpnZXRXZWJFbnVtQ29uc3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RE9NOjpMaXZl
UmVnaW9uUmVsZXZhbnQ6OlJlbW92YWxzKTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFy
aWFSZWxldmFudFRleHQgPSBUeXBlQnVpbGRlcjo6Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUoVHlw
ZUJ1aWxkZXI6OkRPTTo6TGl2ZVJlZ2lvblJlbGV2YW50OjpUZXh0KTsKLSAgICAgICAgICAgICAg
ICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZh
bnRBZGRpdGlvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRXZWJFbnVtQ29uc3RhbnRWYWx1
ZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6QWRkaXRpb25z
KTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFJlbW92YWxzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OlJlbW92YWxzKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRX
ZWJFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVSZWdpb25S
ZWxldmFudDo6VGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB2YWx1ZXMgPSBTcGFjZVNwbGl0U3Ry
aW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIC8v
IEBhcmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9zZWQgYXMgWyJhZGRpdGlvbnMiLCJyZW1vdmFs
cyIsInRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb3JkZXIg
aXMgY29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBleHBlY3RlZCBpbiBXZWJJbnNwZWN0b3JVSS4K
QEAgLTE1ODQsOSArMTU4NCw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iCiAKICAgICAgICAg
ICAgICAgICBTdHJpbmcgYXJpYUxpdmUgPSBheE9iamVjdC0+YXJpYUxpdmVSZWdpb25TdGF0dXMo
KTsKICAgICAgICAgICAgICAgICBpZiAoYXJpYUxpdmUgPT0gImFzc2VydGl2ZSIpCi0gICAgICAg
ICAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0dXMgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllczo6TGl2ZVJlZ2lvblN0YXR1czo6QXNzZXJ0aXZlOworICAgICAgICAg
ICAgICAgICAgICBsaXZlUmVnaW9uU3RhdHVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllczo6TGl2ZVJlZ2lvblN0YXR1czo6QXNzZXJ0aXZlOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGFyaWFMaXZlID09ICJwb2xpdGUiKQotICAgICAgICAgICAg
ICAgICAgICBsaXZlUmVnaW9uU3RhdHVzID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0
eVByb3BlcnRpZXM6OkxpdmVSZWdpb25TdGF0dXM6OlBvbGl0ZTsKKyAgICAgICAgICAgICAgICAg
ICAgbGl2ZVJlZ2lvblN0YXR1cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXM6OkxpdmVSZWdpb25TdGF0dXM6OlBvbGl0ZTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkp
CkBAIC0xNTk2LDcgKzE1OTYsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYgogICAgICAgICAg
ICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gb3duZWRFbGVtZW50czsKICAgICAgICAgICAgICAgICBh
eE9iamVjdC0+ZWxlbWVudHNGcm9tQXR0cmlidXRlKG93bmVkRWxlbWVudHMsIGFyaWFfb3duc0F0
dHIpOwogICAgICAgICAgICAgICAgIGlmIChvd25lZEVsZW1lbnRzLnNpemUoKSkgewotICAgICAg
ICAgICAgICAgICAgICBvd25lZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgb3duZWROb2RlSWRzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGZvciAoRWxlbWVudCogb3duZWRFbGVtZW50IDogb3duZWRFbGVtZW50cykKICAgICAgICAg
ICAgICAgICAgICAgICAgIG93bmVkTm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKG93bmVkRWxlbWVudCkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2MjIsNyArMTYyMiw3
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKICAgICAg
ICAgICAgIGF4T2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4pOwogICAg
ICAgICAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAg
c2VsZWN0ZWRDaGlsZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZUlkcyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGZv
ciAoYXV0byYgc2VsZWN0ZWRDaGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4pIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKE5vZGUqIHNlbGVjdGVkQ2hpbGROb2RlID0gc2VsZWN0ZWRDaGls
ZE9iamVjdC0+bm9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZE5v
ZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChzZWxlY3RlZENoaWxkTm9kZSkp
OwpAQCAtMTYzMSw3ICsxNjMxLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nl
c3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAg
fQogICAgIH0KICAgICAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0
eVByb3BlcnRpZXM+IHZhbHVlID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNj
ZXNzaWJpbGl0eVByb3BlcnRpZXM+IHZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Y3JlYXRlKCkKICAgICAgICAgLnNldEV4aXN0cyhleGlz
dHMpCiAgICAgICAgIC5zZXRMYWJlbChsYWJlbCkKICAgICAgICAgLnNldFJvbGUocm9sZSkKQEAg
LTE2NjAsNyArMTY2MCw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iCiAgICAgICAgICAgICB2
YWx1ZS0+c2V0SWdub3JlZChpZ25vcmVkKTsKICAgICAgICAgaWYgKGlnbm9yZWRCeURlZmF1bHQp
CiAgICAgICAgICAgICB2YWx1ZS0+c2V0SWdub3JlZEJ5RGVmYXVsdChpZ25vcmVkQnlEZWZhdWx0
KTsKLSAgICAgICAgaWYgKGludmFsaWQgIT0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0
eVByb3BlcnRpZXM6OkludmFsaWQ6OkZhbHNlKQorICAgICAgICBpZiAoaW52YWxpZCAhPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpJbnZhbGlkOjpG
YWxzZSkKICAgICAgICAgICAgIHZhbHVlLT5zZXRJbnZhbGlkKGludmFsaWQpOwogICAgICAgICBp
ZiAoaGlkZGVuKQogICAgICAgICAgICAgdmFsdWUtPnNldEhpZGRlbihoaWRkZW4pOwpAQCAtMTc2
NCw3ICsxNzY0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92
ZWQocGFyZW50SWQsIGZyYW1lT3duZXJJZCk7CiAgICAgdW5iaW5kKGZyYW1lT3duZXIsICZtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXApOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4gdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUoZnJhbWVPd25lciwgMCwgJm1f
ZG9jdW1lbnROb2RlVG9JZE1hcCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT4gdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUoZnJhbWVPd25lciwgMCwgJm1fZG9j
dW1lbnROb2RlVG9JZE1hcCk7CiAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nID0gaW5uZXJQcmV2
aW91c1NpYmxpbmcoZnJhbWVPd25lcik7CiAgICAgaW50IHByZXZJZCA9IHByZXZpb3VzU2libGlu
ZyA/IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocHJldmlvdXNTaWJsaW5nKSA6IDA7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQs
IHZhbHVlLnJlbGVhc2UoKSk7CkBAIC0xNzk0LDcgKzE3OTQsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIENoaWxkcmVu
IGhhdmUgYmVlbiByZXF1ZXN0ZWQgLT4gcmV0dXJuIHZhbHVlIG9mIGEgbmV3IGNoaWxkLgogICAg
ICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKG5vZGUpOwogICAg
ICAgICBpbnQgcHJldklkID0gcHJldlNpYmxpbmcgPyBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0
KHByZXZTaWJsaW5nKSA6IDA7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXApOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5v
ZGVUb0lkTWFwKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2Vy
dGVkKHBhcmVudElkLCBwcmV2SWQsIHZhbHVlLnJlbGVhc2UoKSk7CiAgICAgfQogfQpAQCAtMTg1
OSw3ICsxODU5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG4KIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+
JiBlbGVtZW50cykKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
aW50Pj4gbm9kZUlkcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBub2RlSWRz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMCwgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewog
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudHMuYXQoaSk7CiAgICAgICAgIGludCBp
ZCA9IGJvdW5kTm9kZUlkKGVsZW1lbnQpOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cHVzaE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9k
ZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50
OjpyZXNvbHZlTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewog
ICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRl
eCAyOGQ3YjIzNmIyNTI3OTZjNzExZTAzMDE2YzliZDQyODIwNDk5M2JmLi5kOTdlZGI3MGE5OWFj
NmZiYjQxMTA3ZjIxYjBhMTAwMmFiNzY0ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTE5LDggKzExOSw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVj
dGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBpbnQqIGVsZW1lbnRJZCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PGludD4+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRE
b2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006
Ok5vZGU+JiByb290KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFs
bChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCog
ZGVwdGgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJv
clN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQo
RXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0
cmluZyogbmFtZSkgb3ZlcnJpZGU7CkBAIC0xMzAsMTMgKzEzMCwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGdldE91dGVySFRNTChFcnJvclN0cmluZyosIGludCBub2RlSWQsIFdURjo6
U3RyaW5nKiBvdXRlckhUTUwpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdXRlckhU
TUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBX
VEY6OlN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVu
ZXJzQXJyYXkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY2Nlc3NpYmlsaXR5UHJv
cGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGll
cykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQ
cm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVzKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRR
dWVyeSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBT
dHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNo
SWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8aW50Pj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNo
UmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5k
ZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4m
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9i
amVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRl
cyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
b2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdy
b3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0
cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVF
bmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGludCogbm9kZUlkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeVBhdGhU
b0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCkg
b3ZlcnJpZGU7CkBAIC0xODMsNyArMTgzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmlu
ZyBkb2N1bWVudFVSTFN0cmluZyhEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc29sdmVOb2RlKE5vZGUq
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVzb2x2ZU5vZGUoTm9kZSosIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzcygpOwogICAg
IGJvb2wgaGFuZGxlVG91Y2hFdmVudChOb2RlKik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CkBA
IC0yMzAsMTIgKzIzMCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKICAgICB2
b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5
cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBkZXNjcmlwdGlvbik7CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4gYnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lk
TWFwKik7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwotICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRh
aW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZv
ckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCk7
Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzPiBidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5vZGUq
KTsKLSAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGlu
dD4+Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IGJ1
aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gYnVpbGRBcnJheUZv
ckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJy
YXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRv
SWRNYXAqIG5vZGVzTWFwKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUq
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKik7CisgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJp
bGl0eUNoaWxkcmVuKFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4sIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYpOwogICAgIAogICAgIE5vZGUqIG5vZGVGb3JQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDRhNGIzOGYyYjVjNWI4YjA2MjA2
OGU4NWY5OTNkNWU5ZTAwODlkNGIuLmM1NTk3MTFkMDI1MzMyYzMyNzAxZmVmNTkzMDRkMjNhODI2
YTkxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQg
YnJlYWtwbwogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJsZURPTUJy
ZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9p
bnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0
aGF0IG93bnMgYSBicmVha3BvaW50LgogICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5r
bm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJn
ZXROb2RlT2JqZWN0ID0gbV9kb21BZ2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCk7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHRhcmdldE5vZGVPYmplY3Qg
PSBtX2RvbUFnZW50LT5yZXNvbHZlTm9kZSh0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKICAgICAgICAgZGVzY3JpcHRpb24tPnNldFZhbHVlKCJ0
YXJnZXROb2RlIiwgdGFyZ2V0Tm9kZU9iamVjdCk7CiAKICAgICAgICAgLy8gRmluZCBicmVha3Bv
aW50IG93bmVyIG5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDAzOWI3NDU4YjA4ZGY1MzczMzVhOTE2MjY5
MGM3MmQzNmUzMTlkYmQuLjA0YzQ5OTRjNjcyOWNjNGRlZjc0ZGUzYTA1MzdiM2QxOTU2ZjJjYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdl
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1z
KQogewogICAgIEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VB
cmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKQEAg
LTEwNCwxMyArMTA0LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01T
dG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+IHN0b3JhZ2VJdGVtcyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz4+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+IHN0b3JhZ2VJdGVtcyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+
OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9yYWdlQXJlYS0+
bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFnZUFyZWEtPmtleShp
KTsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0oa2V5KTsKIAotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gZW50cnkg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGVudHJ5ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGVudHJ5
LT5hZGRJdGVtKGtleSk7CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKHZhbHVlKTsKICAgICAgICAg
c3RvcmFnZUl0ZW1zLT5hZGRJdGVtKGVudHJ5LnJlbGVhc2UoKSk7CkBAIC0xNTgsOSArMTU4LDkg
QEAgU3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0b3JhZ2UqIHN0
b3JhZ2UpCiAgICAgcmV0dXJuIHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbi5nZXQoKSwgaXNMb2Nh
bFN0b3JhZ2UpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbCBpc0xvY2Fs
U3RvcmFnZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3Rv
cmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNMb2NhbFN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6Y3JlYXRlKCkKKyAg
ICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpjcmVh
dGUoKQogICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4tPnRvUmF3U3Ry
aW5nKCkpCiAgICAgICAgIC5zZXRJc0xvY2FsU3RvcmFnZShpc0xvY2FsU3RvcmFnZSkucmVsZWFz
ZSgpOwogfQpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uCiAgICAg
aWYgKCFtX2Zyb250ZW5kRGlzcGF0Y2hlciB8fCAhbV9lbmFibGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFn
ZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxT
dG9yYWdlKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3Rv
cmFnZUlkPiBpZCA9IHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9j
YWxTdG9yYWdlKTsKIAogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5kb21TdG9yYWdlSXRlbXNDbGVhcmVkKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCAwNTcyOGYx
ZmNlMzYzOWQyZjZhMjBlYTE1ZGNkOTk0NjVjOTIzYTFiLi4yODIwZjExNzUxZjIxYWJmOThlMDZl
MjkwYjMzMmNiOTliYWM4MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC02MywxMyArNjMsMTMgQEAgcHVibGljOgog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9y
U3RyaW5nKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0
b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1z
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYg
a2V5KSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQu
CiAgICAgU3RyaW5nIHN0b3JhZ2VJZChTdG9yYWdlKik7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChTZWN1cml0
eU9yaWdpbiosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQoU2VjdXJpdHlPcmln
aW4qLCBib29sIGlzTG9jYWxTdG9yYWdlKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3
VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBk
OTM4YWI1MzllM2ViYzZjMjg1OGI0YzQ2OWNlNzI4YjgxZjdlYjUxLi4zMDk5ZDY1NmVkMGI5MjBm
YzM5NjJiOGRlMjhhN2NiN2FjNTNiNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVz
cGFjZSB7CiAKIHZvaWQgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQoRXhlY3V0ZVNRTENhbGxiYWNr
KiByZXF1ZXN0Q2FsbGJhY2ssIFNRTEVycm9yKiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBlcnJvck9iamVjdCA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBlcnJvck9iamVjdCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldE1lc3Nh
Z2UoZXJyb3ItPm1lc3NhZ2UoKSkKICAgICAgICAgLnNldENvZGUoZXJyb3ItPmNvZGUoKSk7CiAg
ICAgcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhudWxscHRyLCBudWxscHRyLCBlcnJvck9i
amVjdC5yZWxlYXNlKCkpOwpAQCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIFNRTFJlc3VsdFNldFJvd0xpc3QqIHJvd0xpc3QgPSByZXN1bHRTZXQtPnJvd3MoKTsKIAot
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gY29s
dW1uTmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNv
bHVtbk5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2x1bW5zID0gcm93TGlzdC0+Y29sdW1u
TmFtZXMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2x1bW5zLnNpemUoKTsg
KytpKQogICAgICAgICAgICAgY29sdW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uc1tpXSk7CiAKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVl
Pj4gdmFsdWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+
OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3RvclZhbHVlPj4gdmFsdWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yVmFsdWU+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgZGF0
YSA9IHJvd0xpc3QtPnZhbHVlcygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRh
dGEuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IHJv
d0xpc3QtPnZhbHVlcygpW2ldOwpAQCAtMjU0LDE0ICsyNTQsMTQgQEAgdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxz
ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFt
ZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpCit2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+JiBuYW1lcykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAg
ICAqZXJyb3IgPSAiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKKyAgICBuYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOwogCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gZGF0YWJhc2VG
b3JJZChkYXRhYmFzZUlkKTsKICAgICBpZiAoZGF0YWJhc2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IGM1NjE1NTYzYTNl
OGI3NTk1NWQwZGEwZDVlOTZlODZiMDdmYTBhMzcuLmEzNTVhZmMwYTZlZGYxYjI3MzVjMjI0OWJl
ZGRmOTQxMjYyMmM4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2Fs
bGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVj
dXRlU1FMQ2FsbGJhY2s+KSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmpl
Y3RlZCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXggZjg0OTk4ZWE2ZTkyNGQwZTNmMmZmOWNhZmFj
ODRkNzUzOGNiN2VmMC4uYWE0OTZmY2U3YjVjMjZjN2ZlOTQ4NDYzMDQ4MGMxNGIxYjc5ZGQxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
OjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYQog
CiB2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQoSW5zcGVjdG9yRGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXIqIGRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyKQogewotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U+IGpzb25PYmpl
Y3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgp
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZT4ganNv
bk9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZTo6Y3JlYXRl
KCkKICAgICAgICAgLnNldElkKG1faWQpCiAgICAgICAgIC5zZXREb21haW4obV9kb21haW4pCiAg
ICAgICAgIC5zZXROYW1lKG1fbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDdmZDYyOTFjOTEwN2YzOGViNDEz
YTYxOTFhNzY3NzBiNTczY2UyMzcuLmY3NGE1ODRlNTczMTdmNDBkNTVkNmVhODc1YTVjYzRjNDE0
NzZkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcApAQCAtNjcsMTQgKzY3LDE0IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNpbmcgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpJbmRleGVkREI6OkRhdGFiYXNlV2l0aE9iamVjdFN0b3JlczsKLXVzaW5nIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0YUVudHJ5OwotdXNpbmcgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6SW5kZXhlZERCOjpLZXk7Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJ
bmRleGVkREI6OktleVBhdGg7Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVk
REI6OktleVJhbmdlOwotdXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZTsKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmVJbmRleDsKK3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OwordXNpbmcg
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7
Cit1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6OkRhdGFFbnRyeTsKK3VzaW5n
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OwordXNpbmcgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6SW5kZXhlZERCOjpLZXlQYXRoOwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6
SW5kZXhlZERCOjpLZXlSYW5nZTsKK3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmU7Cit1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9i
amVjdFN0b3JlSW5kZXg7CiAKIHR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKIHR5cGVkZWYgSW5zcGVjdG9y
OjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRh
YmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKQEAgLTEyNSw3
ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gZGF0YWJhc2VOYW1lc0xpc3QgPSByZXF1ZXN0UmVzdWx0LT5kb21TdHJpbmdMaXN0KCk7
Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBk
YXRhYmFzZU5hbWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3Jl
YXRlKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiBkYXRhYmFzZU5hbWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3Jl
YXRlKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lc0xpc3Qt
Pmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBkYXRhYmFzZU5hbWVzLT5hZGRJdGVtKGRhdGFi
YXNlTmFtZXNMaXN0LT5pdGVtKGkpKTsKICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRT
dWNjZXNzKGRhdGFiYXNlTmFtZXMucmVsZWFzZSgpKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3QgSURCS2V5
UGF0aCYgaWRiS2V5UGF0aCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpB
cnJheVR5cGU6IHsKICAgICAgICAga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUo
S2V5UGF0aDo6VHlwZTo6QXJyYXkpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPj4gYXJyYXkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+IGFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdBcnJheSA9
IGlkYktleVBhdGguYXJyYXkoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJp
bmdBcnJheS5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZ0Fy
cmF5W2ldKTsKQEAgLTI4MiwxMCArMjgyLDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBjb25zdCBJ
REJEYXRhYmFzZU1ldGFkYXRhIGRhdGFiYXNlTWV0YWRhdGEgPSBpZGJEYXRhYmFzZS0+bWV0YWRh
dGEoKTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3Jl
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2Jq
ZWN0U3RvcmU+PiBvYmplY3RTdG9yZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CiAKICAg
ICAgICAgZm9yIChjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFk
YXRhIDogZGF0YWJhc2VNZXRhZGF0YS5vYmplY3RTdG9yZXMudmFsdWVzKCkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVzID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RT
dG9yZUluZGV4Pj4gaW5kZXhlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleD46OmNyZWF0ZSgpOwogCiAg
ICAgICAgICAgICBmb3IgKGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEgOiBv
YmplY3RTdG9yZU1ldGFkYXRhLmluZGV4ZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8T2JqZWN0U3RvcmVJbmRleD4gb2JqZWN0U3RvcmVJbmRleCA9IE9iamVjdFN0b3JlSW5k
ZXg6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcAppbmRleCBhMDM3ZmE4Y2M5NzBjY2RmYzYxZjhhODg2NGE5ODk2
YWNmMzdkOWQwLi5hNjlkZjFhZDU4MjgyNmEyNjMzNzZkNzg2YTMxMmExZmZkNjY1M2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAKQEAgLTEwNiw5ICsxMDYsOSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpw
c2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbgogICAgIHVu
YmluZFBzZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewotICAgIGxheWVycyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6TGF5ZXI+OjpjcmVhdGUoKTsKKyAgICBsYXllcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7CiAK
ICAgICBOb2RlKiBub2RlID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2Vu
dCgpLT5ub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZAogICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVy
T2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJlciwgbGF5ZXJzKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RI
aWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4m
IGxheWVycykKIHsKICAgICBpZiAocmVuZGVyZXItPmhhc0xheWVyKCkpIHsKICAgICAgICAgZ2F0
aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShlcnJvclN0cmluZywgdG9SZW5kZXJM
YXllck1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1Jl
bmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZwogICAgICAgICBnYXRoZXJMYXllcnNVc2lu
Z1JlbmRlck9iamVjdEhpZXJhcmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIsIGxheWVycyk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVy
TGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVu
ZGVyTGF5ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6
OkxheWVyPj4mIGxheWVycykKIHsKICAgICBpZiAocmVuZGVyTGF5ZXItPmlzQ29tcG9zaXRlZCgp
KQogICAgICAgICBsYXllcnMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JMYXllcihlcnJvclN0cmlu
ZywgcmVuZGVyTGF5ZXIpKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3Ry
aW5nKgogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KGVycm9y
U3RyaW5nLCByZW5kZXJMYXllciwgbGF5ZXJzKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
YnVpbGRPYmplY3RGb3JMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVy
KiByZW5kZXJMYXllcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVl
OjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCiB7CiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZyZW5kZXJMYXllci0+cmVuZGVyZXIoKTsKICAgICBS
ZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByZW5kZXJMYXllci0+YmFja2luZygpOwpAQCAt
MTY1LDcgKzE2NSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1CiAgICAgICAgIG5vZGUgPSBy
ZW5kZXJlci0+cGFyZW50KCktPmVsZW1lbnQoKTsKIAogICAgIC8vIEJhc2ljIHNldCBvZiBwcm9w
ZXJ0aWVzLgotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6Okxh
eWVyPiBsYXllck9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5
ZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6
TGF5ZXI+IGxheWVyT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXll
cjo6Y3JlYXRlKCkKICAgICAgICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikpCiAgICAg
ICAgIC5zZXROb2RlSWQoaWRGb3JOb2RlKGVycm9yU3RyaW5nLCBub2RlKSkKICAgICAgICAgLnNl
dEJvdW5kcyhidWlsZE9iamVjdEZvckludFJlY3QocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkpKQpAQCAtMjE3LDE2ICsyMTcsMTYgQEAgaW50IEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjppZEZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBOb2RlKiBub2RlKQogICAg
IHJldHVybiBub2RlSWQ7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpJbnRSZWN0PiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RG
b3JJbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkxheWVyVHJlZTo6SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q6OmNyZWF0ZSgpCisgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldFgocmVjdC54KCkpCiAgICAgICAgIC5zZXRZKHJlY3QueSgpKQogICAgICAgICAu
c2V0V2lkdGgocmVjdC53aWR0aCgpKQogICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkp
LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0Zv
ckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBv
c2l0aW5nUmVhc29ucz4mIGNvbXBvc2l0aW5nUmVhc29ucykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
TGF5ZXJUcmVlOjpDb21wb3NpdGluZ1JlYXNvbnM+JiBjb21wb3NpdGluZ1JlYXNvbnMpCiB7CiAg
ICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVy
SWQpOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW4KICAgICB9
CiAKICAgICBDb21wb3NpdGluZ1JlYXNvbnMgcmVhc29uc0JpdG1hc2sgPSByZW5kZXJMYXllci0+
Y29tcG9zaXRvcigpLnJlYXNvbnNGb3JDb21wb3NpdGluZygqcmVuZGVyTGF5ZXIpOwotICAgIGNv
bXBvc2l0aW5nUmVhc29ucyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29t
cG9zaXRpbmdSZWFzb25zOjpjcmVhdGUoKTsKKyAgICBjb21wb3NpdGluZ1JlYXNvbnMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29uczo6Y3JlYXRlKCk7
CiAKICAgICBpZiAocmVhc29uc0JpdG1hc2sgJiBDb21wb3NpdGluZ1JlYXNvbjNEVHJhbnNmb3Jt
KQogICAgICAgICBjb21wb3NpdGluZ1JlYXNvbnMtPnNldFRyYW5zZm9ybTNEKHRydWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApp
bmRleCBkYzRjYWQzMWZlZDA5MWM3OTNkZTJmMjg3OWNhYzBlYjlhNjcxZjQwLi42ZDg0YzliYzBh
MTdlYWU1NzYzNTExZDU5YzU1ZmUxNGM1YWVhNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlz
cGF0Y2hlcnMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTYzLDE5ICs2MywxOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250
LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXll
clRyZWU6OkxheWVyPj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhc29uc0ZvckNv
bXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4m
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkNvbXBvc2l0
aW5nUmVhc29ucz4mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICAvLyBSZW5kZXJMYXllci1y
ZWxhdGVkIG1ldGhvZHMuCiAgICAgU3RyaW5nIGJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAg
ICB2b2lkIHVuYmluZChjb25zdCBSZW5kZXJMYXllciopOwogCi0gICAgdm9pZCBnYXRoZXJMYXll
cnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRlck9iamVjdCos
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsKLSAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVu
ZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqLCBSZW5kZXJMYXllciosIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRy
ZWU6OkxheWVyPj4mKTsKKyAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGll
cmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwor
ICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmlu
ZyosIFJlbmRlckxheWVyKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxh
eWVyKEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJbnRSZWN0
KGNvbnN0IEludFJlY3QmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Okxh
eWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqLCBSZW5kZXJM
YXllciopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpJ
bnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOwogCiAgICAgaW50
IGlkRm9yTm9kZShFcnJvclN0cmluZyosIE5vZGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAyOGJiOTE5N2Y3YzBmMDExYzA4
YzllMTRmOWZjYTA2ODYyYTg0YjE3Li5kZGYxZjBiZGNlN2E2NGMzODQ2NDRjMjE4OGM3NGQwYWZm
YTk5ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtMjg3LDI3ICsyODcsMjcgQEAgQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBh
Z2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAg
ICByZXR1cm4gY2FjaGVkUmVzb3VyY2U7CiB9CiAKLUluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBh
Z2U6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24oSW5z
cGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKQorSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VU
eXBlSnNvbihJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUpCiB7
CiAgICAgc3dpdGNoIChyZXNvdXJjZVR5cGUpIHsKICAgICBjYXNlIERvY3VtZW50UmVzb3VyY2U6
Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5
cGU6OkRvY3VtZW50OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
UmVzb3VyY2VUeXBlOjpEb2N1bWVudDsKICAgICBjYXNlIEltYWdlUmVzb3VyY2U6Ci0gICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkltYWdl
OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBl
OjpJbWFnZTsKICAgICBjYXNlIEZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6Rm9udDsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZTo6Rm9udDsKICAgICBjYXNl
IFN0eWxlc2hlZXRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6U3R5bGVzaGVldDsKKyAgICAgICAgcmV0dXJuIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZTo6U3R5bGVzaGVldDsKICAgICBjYXNl
IFNjcmlwdFJlc291cmNlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6UmVzb3VyY2VUeXBlOjpTY3JpcHQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlNjcmlwdDsKICAgICBjYXNlIFhIUlJlc291cmNl
OgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VU
eXBlOjpYSFI7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNv
dXJjZVR5cGU6OlhIUjsKICAgICBjYXNlIFdlYlNvY2tldFJlc291cmNlOgotICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpXZWJTb2NrZXQ7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6
OldlYlNvY2tldDsKICAgICBjYXNlIE90aGVyUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKICAg
ICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlw
ZTo6T3RoZXI7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNl
VHlwZTo6T3RoZXI7CiB9CiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291cmNlJiBj
YWNoZWRSZXNvdXJjZSkKQEAgLTMzNSw3ICszMzUsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJl
c291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZShjb25zdCBD
YQogICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKLUlu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmNhY2hlZFJlc291cmNlVHlwZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJl
c291cmNlKQorSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3Rv
clBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYg
Y2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgcmV0dXJuIHJlc291cmNlVHlwZUpzb24oY2FjaGVkUmVz
b3VyY2VUeXBlKGNhY2hlZFJlc291cmNlKSk7CiB9CkBAIC00MzIsOSArNDMyLDkgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1
cmwpCiAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIs
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2Jq
ZWN0Rm9yQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQorc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShjb25z
dCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UGFnZTo6Q29va2llOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpDb29raWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXROYW1lKGNvb2tpZS5uYW1lKQogICAg
ICAgICAuc2V0VmFsdWUoY29va2llLnZhbHVlKQogICAgICAgICAuc2V0RG9tYWluKGNvb2tpZS5k
b21haW4pCkBAIC00NDcsOSArNDQ3LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShjb24KICAgICAg
ICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gYnVpbGRB
cnJheUZvckNvb2tpZXMoTGlzdEhhc2hTZXQ8Q29va2llPiYgY29va2llc0xpc3QpCitzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxDb29raWU+
JiBjb29raWVzTGlzdCkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gY29va2llcyA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNv
b2tpZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiBjb29raWVzID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPjo6Y3JlYXRl
KCk7CiAKICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXNMaXN0KQogICAgICAgICBjb29r
aWVzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvb2tpZSkpOwpAQCAtNDk3LDcgKzQ5
Nyw3IEBAIHN0YXRpYyBWZWN0b3I8VVJMPiBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoRnJhbWUq
IGZyYW1lKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKQor
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29v
a2llPj4mIGNvb2tpZXMpCiB7CiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAg
ICBMaXN0SGFzaFNldDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwpAQCAtNTM2LDcgKzUzNiw3IEBA
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6CiAgICAgaWYgKHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkK
ICAgICAgICAgY29va2llcyA9IGJ1aWxkQXJyYXlGb3JDb29raWVzKHJhd0Nvb2tpZXNMaXN0KTsK
ICAgICBlbHNlCi0gICAgICAgIGNvb2tpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CisgICAgICAgIGNvb2tpZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpD
b29raWU+OjpjcmVhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNv
b2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5n
JiB1cmwpCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0
ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY28KICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNv
b2tpZU5hbWUpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVl
KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2VUcmVlPiYgb2JqZWN0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291
cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpG
cmFtZVJlc291cmNlVHJlZT4mIG9iamVjdCkKIHsKICAgICBvYmplY3QgPSBidWlsZE9iamVjdEZv
ckZyYW1lVHJlZSgmbV9wYWdlLT5tYWluRnJhbWUoKSk7CiB9CkBAIC01NzMsOSArNTczLDkgQEAg
c3RhdGljIGJvb2wgdGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UsIFN0cmluZyoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMp
Cit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
cXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1
bHRzKQogewotICAgIHJlc3VsdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7
CisgICAgcmVzdWx0cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wg
aXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAg
ICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxD
YXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBAIC02MDcsMTggKzYwNywxOCBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCwgYwogICAgIHJlc3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpzZWFyY2hJ
blRleHRCeUxpbmVzKGNvbnRlbnQsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNo
UmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0NvdW50KQorc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNl
YXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQg
bWF0Y2hlc0NvdW50KQogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hSZXN1bHQ6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybCh1cmwpCiAgICAg
ICAgIC5zZXRGcmFtZUlkKGZyYW1lSWQpCiAgICAgICAgIC5zZXRNYXRjaGVzQ291bnQobWF0Y2hl
c0NvdW50KQogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qg
b3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdHMpCit2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJl
c3VsdHMpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+IHNlYXJjaFJlc3VsdHMgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4gc2VhcmNo
UmVzdWx0cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0
aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNl
bnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUg
OiBmYWxzZTsKQEAgLTk0MCw5ICs5NDAsOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2Ny
aXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNj
cmlwdHNFbmFibGVkKGlzRW5hYmxlZCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JG
cmFtZShGcmFtZSogZnJhbWUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6
OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqIGZy
YW1lKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4g
ZnJhbWVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZTo6Y3JlYXRl
KCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGZyYW1lT2Jq
ZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRJZChmcmFtZUlkKGZyYW1lKSkKICAgICAgICAgLnNldExvYWRlcklkKGxvYWRlcklkKGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkKICAgICAgICAgLnNldFVybChmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpCkBAIC05NjAsMTYgKzk2MCwxNiBAQCBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmJ1aWxkT2JqZWN0RgogICAgIHJldHVybiBmcmFtZU9iamVjdDsKIH0KIAotUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVj
dG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSogZnJhbWUpCitQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKIHsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2Jq
ZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVz
b3VyY2U+PiBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBy
ZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6
Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGZy
YW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVz
b3VyY2U+PiBzdWJyZXNvdXJjZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiByZXN1bHQgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRlKCkKICAg
ICAgICAgIC5zZXRGcmFtZShmcmFtZU9iamVjdCkKICAgICAgICAgIC5zZXRSZXNvdXJjZXMoc3Vi
cmVzb3VyY2VzKTsKIAogICAgIGZvciAoYXV0byogY2FjaGVkUmVzb3VyY2UgOiBjYWNoZWRSZXNv
dXJjZXNGb3JGcmFtZShmcmFtZSkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZTo6Y3JlYXRlKCkKICAg
ICAgICAgICAgIC5zZXRVcmwoY2FjaGVkUmVzb3VyY2UtPnVybCgpKQogICAgICAgICAgICAgLnNl
dFR5cGUoY2FjaGVkUmVzb3VyY2VUeXBlSnNvbigqY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICAg
ICAgLnNldE1pbWVUeXBlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwpA
QCAtOTgzLDEwICs5ODMsMTAgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQ
YWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjoKICAgICAgICAgc3Vi
cmVzb3VyY2VzLT5hZGRJdGVtKHJlc291cmNlT2JqZWN0KTsKICAgICB9CiAKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+PiBjaGlsZHJlbkFycmF5OworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291
cmNlVHJlZT4+IGNoaWxkcmVuQXJyYXk7CiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+
dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2li
bGluZygpKSB7CiAgICAgICAgIGlmICghY2hpbGRyZW5BcnJheSkgewotICAgICAgICAgICAgY2hp
bGRyZW5BcnJheSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBjaGlsZHJlbkFycmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsKICAgICAgICAgICAg
IHJlc3VsdC0+c2V0Q2hpbGRGcmFtZXMoY2hpbGRyZW5BcnJheSk7CiAgICAgICAgIH0KICAgICAg
ICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckZyYW1lVHJlZShjaGlsZCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4
IDlmODdkMjI5ZDQzNjcwOTZmMjg2MDM4MWVmMjNkM2IyMjUzMTk0YjQuLmIzNGQxYWE0ZmFjMjIz
ZjZhMWE5NzViYThhYzE0ZGFlMGRhYmM0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTkwLDkgKzkwLDkgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEoRnJhbWUqLCBjb25z
dCBVUkwmLCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpOwogICAgIHN0YXRpYyBDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUpzb24o
UmVzb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZUpzb24oUmVzb3VyY2VUeXBlKTsKICAgICBzdGF0aWMgUmVz
b3VyY2VUeXBlIGNhY2hlZFJlc291cmNlVHlwZShjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwotICAg
IHN0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGUgY2FjaGVk
UmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOworICAgIHN0YXRpYyBJbnNw
ZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlSnNv
bihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgLy8gUGFnZSBBUEkgZm9yIEluc3BlY3Rv
ckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRl
OwpAQCAtMTAxLDEyICsxMDEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVT
Y3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29u
c3QgYm9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlw
dFRvRXZhbHVhdGVPbkxvYWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0ZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29va2llcykg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6
Q29va2llPj4mIGNvb2tpZXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29r
aWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYg
dXJsKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRy
ZWU+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmlu
ZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVy
aWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZWFy
Y2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+
PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1l
bnRDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGh0bWwpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhF
cnJvclN0cmluZyosIGJvb2wgc2hvdykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNhblNo
b3dEZWJ1Z0JvcmRlcnMoRXJyb3JTdHJpbmcqLCBib29sKikgb3ZlcnJpZGU7CkBAIC0xNzAsOCAr
MTcwLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZy
YW1lKiwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGlj
IGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyog
cmVzdWx0KTsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZv
ckZyYW1lVHJlZShGcmFtZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6RnJhbWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKKyAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVj
dEZvckZyYW1lVHJlZShGcmFtZSopOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JD
bGllbnQqIG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
clBhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggZjQ4
MGM1NDA3M2MwMDI3NTQ0ZWZhNDhjOWZhYjVlMWMxNGRhMmY0Yi4uYzE0ODdhMDk3MTMyNjc2MTAy
YzI2NGJkZDMxYTc3MGNkYmY2NzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
RnVuY3RvcklucHV0Q3Vyc29yLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5
cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCIKICNp
bmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKQEAgLTU0LDE5ICs1NCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uPiBidWlsZEluc3BlY3Rvck9iamVjdEZvclBvc2l0
aW9uKGNvbnN0IFJlcGxheVBvc2l0aW9uJiBwb3NpdGlvbikKK3N0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+IGJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9yUG9zaXRpb24oY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9uKQogewotICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4gcG9zaXRpb25PYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbjo6Y3JlYXRlKCkKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4gcG9zaXRp
b25PYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uOjpj
cmVhdGUoKQogICAgICAgICAuc2V0U2VnbWVudE9mZnNldChwb3NpdGlvbi5zZWdtZW50T2Zmc2V0
KQogICAgICAgICAuc2V0SW5wdXRPZmZzZXQocG9zaXRpb24uaW5wdXRPZmZzZXQpOwogCiAgICAg
cmV0dXJuIHBvc2l0aW9uT2JqZWN0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9y
SW5wdXQoY29uc3QgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSYgaW5wdXQsIHNpemVfdCBvZmZz
ZXQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxh
eUlucHV0PiBidWlsZEluc3BlY3Rvck9iamVjdEZvcklucHV0KGNvbnN0IE5vbmRldGVybWluaXN0
aWNJbnB1dEJhc2UmIGlucHV0LCBzaXplX3Qgb2Zmc2V0KQogewogICAgIEVuY29kZWRWYWx1ZSBl
bmNvZGVkSW5wdXQgPSBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlPjo6
ZW5jb2RlVmFsdWUoaW5wdXQpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBs
YXlJbnB1dD4gaW5wdXRPYmplY3QgPSBUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dDo6
Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlJ
bnB1dD4gaW5wdXRPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlu
cHV0OjpjcmVhdGUoKQogICAgICAgICAuc2V0VHlwZShpbnB1dC50eXBlKCkpCiAgICAgICAgIC5z
ZXRPZmZzZXQob2Zmc2V0KQogICAgICAgICAuc2V0RGF0YShlbmNvZGVkSW5wdXQuYXNPYmplY3Qo
KSk7CkBAIC03NCwxNSArNzQsMTUgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJl
cGxheTo6UmVwbGF5SW5wdXQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQKICAgICByZXR1
cm4gaW5wdXRPYmplY3QucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlc3Np
b24oUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBwcnBTZXNzaW9uKQorc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiBidWlsZEluc3Bl
Y3Rvck9iamVjdEZvclNlc3Npb24oUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBwcnBTZXNzaW9u
KQogewogICAgIFJlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uID0gcHJwU2Vzc2lvbjsKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFNlZ21lbnRJZGVudGlmaWVyPj4gc2VnbWVudHMg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8U2VnbWVudElkZW50aWZpZXI+OjpjcmVhdGUoKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U2VnbWVudElkZW50aWZpZXI+PiBzZWdt
ZW50cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFNlZ21lbnRJZGVudGlmaWVyPjo6Y3Jl
YXRlKCk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBzZXNzaW9uLT5iZWdpbigpOyBpdCAhPSBzZXNz
aW9uLT5lbmQoKTsgKytpdCkKICAgICAgICAgc2VnbWVudHMtPmFkZEl0ZW0oKCppdCktPmlkZW50
aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5U2Vzc2lv
bj4gc2Vzc2lvbk9iamVjdCA9IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheVNlc3Npb246OmNy
ZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5U2Vz
c2lvbj4gc2Vzc2lvbk9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5
U2Vzc2lvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldElkKHNlc3Npb24tPmlkZW50aWZpZXIoKSkK
ICAgICAgICAgLnNldFRpbWVzdGFtcChzZXNzaW9uLT50aW1lc3RhbXAoKSkKICAgICAgICAgLnNl
dFNlZ21lbnRzKHNlZ21lbnRzLnJlbGVhc2UoKSk7CkBAIC05MCw2NSArOTAsNjUgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5U2Vzc2lvbj4gYnVpbGRJbnNw
ZWN0b3JPYmplY3RGb3JTZXMKICAgICByZXR1cm4gc2Vzc2lvbk9iamVjdC5yZWxlYXNlKCk7CiB9
CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uU3RhdGUgYnVpbGRJbnNwZWN0
b3JPYmplY3RGb3JTZXNzaW9uU3RhdGUoV2ViQ29yZTo6U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0
ZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TdGF0ZSBidWls
ZEluc3BlY3Rvck9iamVjdEZvclNlc3Npb25TdGF0ZShXZWJDb3JlOjpTZXNzaW9uU3RhdGUgc2Vz
c2lvblN0YXRlKQogewogICAgIHN3aXRjaCAoc2Vzc2lvblN0YXRlKSB7Ci0gICAgY2FzZSBXZWJD
b3JlOjpTZXNzaW9uU3RhdGU6OkNhcHR1cmluZzogcmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6
OlNlc3Npb25TdGF0ZTo6Q2FwdHVyaW5nOwotICAgIGNhc2UgV2ViQ29yZTo6U2Vzc2lvblN0YXRl
OjpJbmFjdGl2ZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25TdGF0ZTo6SW5h
Y3RpdmU7Ci0gICAgY2FzZSBXZWJDb3JlOjpTZXNzaW9uU3RhdGU6OlJlcGxheWluZzogcmV0dXJu
IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25TdGF0ZTo6UmVwbGF5aW5nOworICAgIGNhc2Ug
V2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpDYXB0dXJpbmc6IHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSZXBsYXk6OlNlc3Npb25TdGF0ZTo6Q2FwdHVyaW5nOworICAgIGNhc2UgV2ViQ29yZTo6
U2Vzc2lvblN0YXRlOjpJbmFjdGl2ZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxh
eTo6U2Vzc2lvblN0YXRlOjpJbmFjdGl2ZTsKKyAgICBjYXNlIFdlYkNvcmU6OlNlc3Npb25TdGF0
ZTo6UmVwbGF5aW5nOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9u
U3RhdGU6OlJlcGxheWluZzsKICAgICB9CiB9CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6UmVwbGF5
OjpTZWdtZW50U3RhdGUgYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZWdtZW50U3RhdGUoV2ViQ29y
ZTo6U2VnbWVudFN0YXRlIHNlZ21lbnRTdGF0ZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29s
OjpSZXBsYXk6OlNlZ21lbnRTdGF0ZSBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnRTdGF0
ZShXZWJDb3JlOjpTZWdtZW50U3RhdGUgc2VnbWVudFN0YXRlKQogewogICAgIHN3aXRjaCAoc2Vn
bWVudFN0YXRlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpTZWdtZW50U3RhdGU6OkFwcGVuZGluZzog
cmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6QXBwZW5kaW5nOwotICAg
IGNhc2UgV2ViQ29yZTo6U2VnbWVudFN0YXRlOjpVbmxvYWRlZDogcmV0dXJuIFR5cGVCdWlsZGVy
OjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6VW5sb2FkZWQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpTZWdt
ZW50U3RhdGU6OkxvYWRlZDogcmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlZ21lbnRTdGF0
ZTo6TG9hZGVkOwotICAgIGNhc2UgV2ViQ29yZTo6U2VnbWVudFN0YXRlOjpEaXNwYXRjaGluZzog
cmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6RGlzcGF0Y2hpbmc7Cisg
ICAgY2FzZSBXZWJDb3JlOjpTZWdtZW50U3RhdGU6OkFwcGVuZGluZzogcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRlOjpBcHBlbmRpbmc7CisgICAgY2FzZSBX
ZWJDb3JlOjpTZWdtZW50U3RhdGU6OlVubG9hZGVkOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpTZWdtZW50U3RhdGU6OlVubG9hZGVkOworICAgIGNhc2UgV2ViQ29yZTo6U2Vn
bWVudFN0YXRlOjpMb2FkZWQ6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNl
Z21lbnRTdGF0ZTo6TG9hZGVkOworICAgIGNhc2UgV2ViQ29yZTo6U2VnbWVudFN0YXRlOjpEaXNw
YXRjaGluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRl
OjpEaXNwYXRjaGluZzsKICAgICB9CiB9CiAKIGNsYXNzIFNlcmlhbGl6ZUlucHV0VG9KU09ORnVu
Y3RvciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dD4+IFJldHVyblR5cGU7CisgICAgdHlw
ZWRlZiBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXQ+PiBSZXR1cm5UeXBlOwogCiAgICAgU2VyaWFsaXpl
SW5wdXRUb0pTT05GdW5jdG9yKCkKLSAgICAgICAgOiBtX2lucHV0cyhUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXQ+OjpjcmVhdGUoKSkgeyB9CisgICAg
ICAgIDogbV9pbnB1dHMoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpSZXBsYXlJbnB1dD46OmNyZWF0ZSgpKSB7IH0KICAgICB+U2VyaWFsaXpl
SW5wdXRUb0pTT05GdW5jdG9yKCkgeyB9CiAKICAgICB2b2lkIG9wZXJhdG9yKCkoc2l6ZV90IGlu
ZGV4LCBjb25zdCBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKiBpbnB1dCkKICAgICB7CiAgICAg
ICAgIExPRyhXZWJSZXBsYXksICIlLTI1cyBXcml0aW5nICU1enU6ICVzXG4iLCAiW1NlcmlhbGl6
ZUlucHV0XSIsIGluZGV4LCBpbnB1dC0+dHlwZSgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsK
IAotICAgICAgICBpZiAoUmVmUHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0PiBz
ZXJpYWxpemVkSW5wdXQgPSBidWlsZEluc3BlY3Rvck9iamVjdEZvcklucHV0KCppbnB1dCwgaW5k
ZXgpKQorICAgICAgICBpZiAoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVw
bGF5SW5wdXQ+IHNlcmlhbGl6ZWRJbnB1dCA9IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQo
KmlucHV0LCBpbmRleCkpCiAgICAgICAgICAgICBtX2lucHV0cy0+YWRkSXRlbShzZXJpYWxpemVk
SW5wdXQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCkg
eyByZXR1cm4gbV9pbnB1dHMucmVsZWFzZSgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXQ+PiBtX2lucHV0
czsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpSZXBsYXlJbnB1dD4+IG1faW5wdXRzOwogfTsKIAotc3RhdGljIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+IGJ1aWxkSW5zcGVjdG9y
T2JqZWN0Rm9yU2VnbWVudChQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBwcnBTZWdt
ZW50KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNz
aW9uU2VnbWVudD4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZWdtZW50KFBhc3NSZWZQdHI8UmVw
bGF5U2Vzc2lvblNlZ21lbnQ+IHBycFNlZ21lbnQpCiB7CiAgICAgUmVmUHRyPFJlcGxheVNlc3Np
b25TZWdtZW50PiBzZWdtZW50ID0gcHJwU2VnbWVudDsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0UXVldWU+PiBxdWV1ZXNPYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXRR
dWV1ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0UXVldWU+PiBxdWV1ZXNPYmpl
Y3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBs
YXk6OlJlcGxheUlucHV0UXVldWU+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihJbnB1dFF1ZXVlOjpDb3VudCk7IGkrKykgewogICAg
ICAgICBTZXJpYWxpemVJbnB1dFRvSlNPTkZ1bmN0b3IgY29sbGVjdG9yOwogICAgICAgICBJbnB1
dFF1ZXVlIHF1ZXVlID0gc3RhdGljX2Nhc3Q8SW5wdXRRdWV1ZT4oaSk7CiAgICAgICAgIFJlZlB0
cjxGdW5jdG9ySW5wdXRDdXJzb3I+IGZ1bmN0b3JDdXJzb3IgPSBGdW5jdG9ySW5wdXRDdXJzb3I6
OmNyZWF0ZShzZWdtZW50KTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dD4+IHF1ZXVlSW5wdXRzID0gZnVuY3RvckN1cnNv
ci0+Zm9yRWFjaElucHV0SW5RdWV1ZShxdWV1ZSwgY29sbGVjdG9yKTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6
UmVwbGF5SW5wdXQ+PiBxdWV1ZUlucHV0cyA9IGZ1bmN0b3JDdXJzb3ItPmZvckVhY2hJbnB1dElu
UXVldWUocXVldWUsIGNvbGxlY3Rvcik7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
ZXBsYXk6OlJlcGxheUlucHV0UXVldWU+IHF1ZXVlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlJlcGxh
eTo6UmVwbGF5SW5wdXRRdWV1ZTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZT4gcXVldWVPYmplY3QgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0UXVldWU6OmNyZWF0ZSgpCiAgICAgICAg
ICAgICAuc2V0VHlwZShFbmNvZGluZ1RyYWl0czxJbnB1dFF1ZXVlPjo6ZW5jb2RlVmFsdWUocXVl
dWUpLmNvbnZlcnRUbzxTdHJpbmc+KCkpCiAgICAgICAgICAgICAuc2V0SW5wdXRzKHF1ZXVlSW5w
dXRzKTsKIAogICAgICAgICBxdWV1ZXNPYmplY3QtPmFkZEl0ZW0ocXVldWVPYmplY3QucmVsZWFz
ZSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblNl
Z21lbnQ+IHNlZ21lbnRPYmplY3QgPSBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uU2VnbWVu
dDo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNz
aW9uU2VnbWVudD4gc2VnbWVudE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6
U2Vzc2lvblNlZ21lbnQ6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRJZChzZWdtZW50LT5pZGVudGlm
aWVyKCkpCiAgICAgICAgIC5zZXRUaW1lc3RhbXAoc2VnbWVudC0+dGltZXN0YW1wKCkpCiAgICAg
ICAgIC5zZXRRdWV1ZXMocXVldWVzT2JqZWN0LnJlbGVhc2UoKSk7CkBAIC0zODgsNyArMzg4LDcg
QEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y2FuY2VsUGxheWJhY2soRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nKQogICAgIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuY2FuY2VsUGxheWJh
Y2soKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c3dpdGNoU2Vzc2lvbihFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpzd2l0Y2hTZXNzaW9u
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpT
ZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChpZGVudGlmaWVyID4g
MCk7CiAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpzd2l0
Y2hTZXNzaW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHlwZUJ1aWxkZXI6OgogICAgIG1f
cGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc3dpdGNoU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6aW5zZXJ0U2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciBzZXNz
aW9uSWRlbnRpZmllciwgU2VnbWVudElkZW50aWZpZXIgc2VnbWVudElkZW50aWZpZXIsIGludCBz
ZWdtZW50SW5kZXgpCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjppbnNlcnRTZXNzaW9uU2Vn
bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxh
eTo6U2Vzc2lvbklkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIsIFNlZ21lbnRJZGVudGlmaWVy
IHNlZ21lbnRJZGVudGlmaWVyLCBpbnQgc2VnbWVudEluZGV4KQogewogICAgIEFTU0VSVChzZXNz
aW9uSWRlbnRpZmllciA+IDApOwogICAgIEFTU0VSVChzZWdtZW50SWRlbnRpZmllciA+IDApOwpA
QCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omluc2VydFNlc3Np
b25TZWdtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHlwZUJ1CiAgICAgc2Vzc2lvbk1v
ZGlmaWVkKHNlc3Npb24pOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpyZW1vdmVT
ZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFR5cGVCdWlsZGVyOjpSZXBs
YXk6OlNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGludCBzZWdtZW50SW5kZXgpCit2b2lk
IEluc3BlY3RvclJlcGxheUFnZW50OjpyZW1vdmVTZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZp
ZXIgaWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkKIHsKICAgICBBU1NFUlQoaWRlbnRpZmll
ciA+IDApOwogICAgIEFTU0VSVChzZWdtZW50SW5kZXggPj0gMCk7CkBAIC00ODAsNyArNDgwLDcg
QEAgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OmZpbmRTZWdtZW50KEVycm9yU3RyaW5nKgogICAgIHJldHVybiBpdC0+dmFsdWU7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmN1cnJlbnRSZXBsYXlTdGF0ZShFcnJvclN0cmluZyos
IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyKiBzZXNzaW9uSWRlbnRpZmll
ciwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50SWRl
bnRpZmllcj4qIHNlZ21lbnRJZGVudGlmaWVyLCBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9u
U3RhdGUqIHNlc3Npb25TdGF0ZSwgVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2VnbWVudFN0YXRlKiBz
ZWdtZW50U3RhdGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4m
IHJlcGxheVBvc2l0aW9uKQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y3VycmVudFJlcGxh
eVN0YXRlKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9u
SWRlbnRpZmllciogc2Vzc2lvbklkZW50aWZpZXIsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyPiogc2Vn
bWVudElkZW50aWZpZXIsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblN0YXRl
KiBzZXNzaW9uU3RhdGUsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRl
KiBzZWdtZW50U3RhdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxh
eVBvc2l0aW9uPiYgcmVwbGF5UG9zaXRpb24pCiB7CiAgICAgKnNlc3Npb25TdGF0ZSA9IGJ1aWxk
SW5zcGVjdG9yT2JqZWN0Rm9yU2Vzc2lvblN0YXRlKG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCku
c2Vzc2lvblN0YXRlKCkpOwogICAgICpzZWdtZW50U3RhdGUgPSBidWlsZEluc3BlY3Rvck9iamVj
dEZvclNlZ21lbnRTdGF0ZShtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnNlZ21lbnRTdGF0ZSgp
KTsKQEAgLTQ5MiwxNCArNDkyLDE0IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmN1cnJl
bnRSZXBsYXlTdGF0ZShFcnJvclN0cmluZyosIFR5cGVCdWlsZGVyOjpSZXBsYXk6CiAgICAgcmVw
bGF5UG9zaXRpb24gPSBidWlsZEluc3BlY3Rvck9iamVjdEZvclBvc2l0aW9uKG1fcGFnZS5yZXBs
YXlDb250cm9sbGVyKCkuY3VycmVudFBvc2l0aW9uKCkpOwogfQogCi12b2lkIEluc3BlY3RvclJl
cGxheUFnZW50OjpnZXRBdmFpbGFibGVTZXNzaW9ucyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8U2Vzc2lvbklkZW50aWZpZXI+PiYgc2Vzc2lvbnNMaXN0KQordm9pZCBJ
bnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0QXZhaWxhYmxlU2Vzc2lvbnMoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U2Vzc2lvbklkZW50aWZpZXI+PiYgc2Vz
c2lvbnNMaXN0KQogewotICAgIHNlc3Npb25zTGlzdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllcj46OmNyZWF0ZSgpOworICAgIHNlc3Np
b25zTGlzdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXI+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX3Nlc3Npb25zTWFwKQogICAgICAgICBzZXNzaW9uc0xpc3QtPmFkZEl0ZW0ocGFpci5r
ZXkpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpnZXRTZXNzaW9uRGF0YShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlTZXNzaW9u
PiYgc2VyaWFsaXplZE9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldFNlc3Np
b25EYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVw
bGF5OjpTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiYgc2VyaWFsaXplZE9iamVjdCkKIHsKICAgICBS
ZWZQdHI8UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbiA9IGZpbmRTZXNzaW9uKGVycm9yU3RyaW5nLCBp
ZGVudGlmaWVyKTsKICAgICBpZiAoIXNlc3Npb24pIHsKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lk
IEluc3BlY3RvclJlcGxheUFnZW50OjpnZXRTZXNzaW9uRGF0YShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIFR5cGVCdWlsZGVyOgogICAgIHNlcmlhbGl6ZWRPYmplY3QgPSBidWlsZEluc3BlY3Rv
ck9iamVjdEZvclNlc3Npb24oc2Vzc2lvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdl
bnQ6OmdldFNlZ21lbnREYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHlwZUJ1aWxkZXI6
OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSZXBsYXk6OlNlc3Npb25TZWdtZW50PiYgc2VyaWFsaXplZE9iamVjdCkKK3ZvaWQgSW5zcGVj
dG9yUmVwbGF5QWdlbnQ6OmdldFNlZ21lbnREYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciBpZGVudGlmaWVy
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4mIHNl
cmlhbGl6ZWRPYmplY3QpCiB7CiAgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdt
ZW50ID0gZmluZFNlZ21lbnQoZXJyb3JTdHJpbmcsIGlkZW50aWZpZXIpOwogICAgIGlmICghc2Vn
bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
cGxheUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuaAppbmRleCBmN2JjZTZmNGNmYjA5YWY0ZDQyZGMxNmYyMTMzYjI1ZjU4Nzk0MWI0Li4wMmNj
N2UwNzRlYmYwNzhkNjY2NTc0NjNlZTNlZTg0ODU2MWI3ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaApAQCAtMTAxLDEzICsxMDEsMTMg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQbGF5YmFjayhFcnJvclN0cmluZyop
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHN3aXRjaFNlc3Npb24oRXJyb3JTdHJpbmcq
LCBTZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydFNl
c3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5
OjpTZXNzaW9uSWRlbnRpZmllciwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdt
ZW50SWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZVNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGluc2VydFNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25TZWdtZW50KEVycm9yU3Ry
aW5nKiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciwgaW50
IHNlZ21lbnRJbmRleCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3VycmVudFJlcGxh
eVN0YXRlKEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNz
aW9uSWRlbnRpZmllciosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyPiosIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblN0YXRlKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UmVwbGF5OjpTZWdtZW50U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEF2YWlsYWJsZVNlc3Npb25zKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxheTo6
U2Vzc2lvbklkZW50aWZpZXI+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTZXNz
aW9uRGF0YShFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vz
c2lvbklkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSZXBsYXk6OlJl
cGxheVNlc3Npb24+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNlZ21lbnREYXRh
KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50SWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblNl
Z21lbnQ+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGN1cnJlbnRSZXBsYXlTdGF0ZShF
cnJvclN0cmluZyosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZp
ZXIqLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllcj4qLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6
OlNlc3Npb25TdGF0ZSosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRl
KiBzZWdtZW50U3RhdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxh
eVBvc2l0aW9uPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRBdmFpbGFibGVTZXNz
aW9ucyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyPj4mKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2Vzc2lvbkRhdGEoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBnZXRTZWdtZW50RGF0YShFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6U2VnbWVudElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBs
YXk6OlNlc3Npb25TZWdtZW50PiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQ
dHI8UmVwbGF5U2Vzc2lvbj4gZmluZFNlc3Npb24oRXJyb3JTdHJpbmcqLCBTZXNzaW9uSWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKaW5kZXggYjQ2OGYzNTU2OTk0ZjY2OWE2MDgzMmFhYTlmZTE5NWMwNWMwZDI0
My4uOTA3ODFhMjczZGRkODExNjA0YzY3NDM2M2E0YWFjMGE1YTFjNzE4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAt
MjAxLDkgKzIwMSw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlCiAgICAgcmV0dXJuIGhlYWRl
cnNPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNv
dXJjZUxvYWRUaW1pbmcmIHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBi
dWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZywgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nOjpjcmVhdGUoKQogICAgICAgICAu
c2V0TmF2aWdhdGlvblN0YXJ0KGxvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKQog
ICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQog
ICAgICAgICAuc2V0RG9tYWluTG9va3VwRW5kKHRpbWluZy5kb21haW5Mb29rdXBFbmQpCkBAIC0y
MTUsOSArMjE1LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm8KICAgICAgICAgLnJlbGVhc2Uo
KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpOZXR3b3JrOjpSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVxdWVzdDo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OlJlcXVlc3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVxdWVz
dC51cmwoKS5zdHJpbmcoKSkKICAgICAgICAgLnNldE1ldGhvZChyZXF1ZXN0Lmh0dHBNZXRob2Qo
KSkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0
cEhlYWRlckZpZWxkcygpKSk7CkBAIC0yMjYsNyArMjI2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JS
ZXNvdXIKICAgICByZXR1cm4gcmVxdWVzdE9iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAg
ICAgaWYgKHJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIz
NCw3ICsyMzQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpO
ZXR3b3JrOjpSZXNwb25zZT4gYnVpbGRPYmplY3RGb3JSZXNvdQogICAgIGRvdWJsZSBzdGF0dXMg
PSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGhlYWRlcnMgPSBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
cygpKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNw
b25zZT4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpS
ZXNwb25zZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6UmVzcG9uc2U+IHJlc3BvbnNlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6UmVzcG9uc2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCkpCiAgICAgICAgIC5zZXRTdGF0dXMoc3RhdHVzKQogICAgICAgICAuc2V0U3RhdHVzVGV4
dChyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKQpAQCAtMjQ5LDE0ICsyNDksMTQgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1
aWxkT2JqZWN0Rm9yUmVzb3UKICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291
cmNlPiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNh
Y2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiByZXNvdXJjZU9iamVjdCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlOjpjcmVhdGUoKQogICAg
ICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLT51cmwoKSkKICAgICAgICAgLnNldFR5cGUoSW5z
cGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKCpjYWNoZWRSZXNvdXJjZSkp
CiAgICAgICAgIC5zZXRCb2R5U2l6ZShjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiAK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJl
c291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVz
b3VyY2UtPnJlc3BvbnNlKCksIGxvYWRlcik7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlc3BvbnNlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOwogICAg
IGlmIChyZXNvdXJjZVJlc3BvbnNlKQogICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0UmVzcG9u
c2UocmVzb3VyY2VSZXNwb25zZSk7CiAKQEAgLTMxNyw5ICszMTcsOSBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TAogICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q2FjaGVDb250cm9sLCAibm8tY2FjaGUiKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9y
UGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOworICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnJlc291cmNlVHlwZUpzb24odHlwZSk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRv
ck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBu
dWxscHRyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlh
dG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1l
KCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+
ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwg
bG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVx
dWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9y
UGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIpOwogfQog
CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUKICAgICAgICAgcmV0
dXJuOwogCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVz
dElkKGlkZW50aWZpZXIpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZShyZXNwb25zZSwgbG9hZGVyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJl
c291cmNlUmVzcG9uc2UocmVzcG9uc2UsIGxvYWRlcik7CiAKICAgICBib29sIGlzTm90TW9kaWZp
ZWQgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsKIApAQCAtMzUwLDcgKzM1MCw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAgaWYgKGNhY2hlZFJlc291cmNlKSB7CiAg
ICAgICAgIC8vIFVzZSBtaW1lIHR5cGUgZnJvbSBjYWNoZWQgcmVzb3VyY2UgaW4gY2FzZSB0aGUg
b25lIGluIHJlc3BvbnNlIGlzIGVtcHR5LgogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZSAm
JiByZXNwb25zZS5taW1lVHlwZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc291cmNlUmVz
cG9uc2UtPnNldFN0cmluZyhJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25z
ZTo6TWltZVR5cGUsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOworICAg
ICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OlJlc3BvbnNlOjpNaW1lVHlwZSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCku
bWltZVR5cGUoKSk7CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2Uo
cmVxdWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQogCkBAIC00NTQsNyArNDU0LDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXVzZVhI
UlJlcGxheURhdGEocmVxdWVzdElkLCByYXdSZXF1ZXN0SWQpOwogICAgIH0KIAotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9i
amVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9y
T2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51
bGxwdHIpOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVt
b3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJp
bmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hl
ZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIpKTsKIH0KQEAgLTU1MSwxOSArNTUxLDE5IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24o
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRv
ciA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGRvY3VtZW50KTsKIH0KIAotUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IGNyZWF0ZVNjcmlwdENhbGxT
dGFjayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBTY3JpcHRDYWxsU3Rh
Y2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwogICAgIGlmIChzdGFja1RyYWNlICYmIHN0
YWNrVHJhY2UtPnNpemUoKSA+IDApIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNl
dFR5cGUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpT
Y3JpcHQpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5p
dGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJ
bml0aWF0b3I6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlNjcmlwdCk7CiAgICAgICAgIGluaXRpYXRv
ck9iamVjdC0+c2V0U3RhY2tUcmFjZShzdGFja1RyYWNlLT5idWlsZEluc3BlY3RvckFycmF5KCkp
OwogICAgICAgICByZXR1cm4gaW5pdGlhdG9yT2JqZWN0OwogICAgIH0KIAogICAgIGlmIChkb2N1
bWVudCAmJiBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkpIHsKLSAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlh
dG9yT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpj
cmVhdGUoKQotICAgICAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0
d29yazo6SW5pdGlhdG9yOjpUeXBlOjpQYXJzZXIpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisgICAgICAgICAgICAu
c2V0VHlwZShJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlBh
cnNlcik7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0VXJsKGRvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSk7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0TGluZU51bWJlcihkb2N1bWVu
dC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGluZS5vbmVC
YXNlZEludCgpKTsKICAgICAgICAgcmV0dXJuIGluaXRpYXRvck9iamVjdDsKQEAgLTU3Miw4ICs1
NzIsOCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRp
YXRvcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YgogICAgIGlmIChtX2lzUmVjYWxjdWxhdGlu
Z1N0eWxlICYmIG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yKQogICAgICAgICByZXR1cm4g
bV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAuc2V0VHlw
ZShJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6Ok90aGVy
KQorICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNy
ZWF0ZSgpCisgICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Oklu
aXRpYXRvcjo6VHlwZTo6T3RoZXIpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU4Niwx
NCArNTg2LDE0IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29j
a2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJl
cXVlc3RPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRS
ZXF1ZXN0OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpXZWJTb2NrZXRSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldEhlYWRlcnMo
YnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSk7CiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJ
ZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwg
cmVxdWVzdE9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlPiByZXNwb25zZU9iamVj
dCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlOjpj
cmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2Nr
ZXRSZXNwb25zZT4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpXZWJTb2NrZXRSZXNwb25zZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXR1cyhyZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpKQogICAgICAgICAuc2V0U3RhdHVzVGV4dChyZXNwb25zZS5odHRw
U3RhdHVzVGV4dCgpKQogICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMo
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSk7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpCiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUm
IGZyYW1lKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpX
ZWJTb2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpXZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6V2ViU29ja2V0RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRP
cGNvZGUoZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNrZWQpCiAgICAg
ICAgIC5zZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExl
bmd0aCkpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKIAogdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFt
ZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1l
OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJT
b2NrZXRGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpX
ZWJTb2NrZXRGcmFtZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUp
CiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRh
KFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA0Yzg4
YWMzZDg2ZjVkYjFjNTVhNTExMTQ3YjI3MzlmOGU0OGY0M2VkLi45Y2E0ODNkZjdlY2I1Y2E0NmFm
NjIxOGFmMjA0NzlhMzJkZTliZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiAgICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxl
UmVjYWxjdWxhdGlvbihEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3Vt
ZW50Kik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0
aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50Kik7CiAKICNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCiAgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBSZWZQdHI8
WEhSUmVwbGF5RGF0YT4+IFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwOwogICAgIFBlbmRpbmdYSFJS
ZXBsYXlEYXRhTWFwIG1fcGVuZGluZ1hIUlJlcGxheURhdGE7CiAgICAgLy8gRklYTUU6IEluc3Bl
Y3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0
aW9uLgotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0
b3I+IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlh
dG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA4ZjJiODJi
N2Y2YjRiZmEyOTA5NjM3MWFlMmEwZGEwNjdlN2Y4OTQ0Li4xZmZkZDRjNTQyOWQzY2U4NjhiOTQ5
NzU2ODQzYjg0NmQ3MzA2NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4K
IAotdXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTsKIHVzaW5nIFdlYkNvcmU6OlJ1bGVTb3VyY2VEYXRhTGlzdDsKIHVz
aW5nIFdlYkNvcmU6OkNTU1J1bGVTb3VyY2VEYXRhOwogCkBAIC0xNDgsMTQgKzE0OCwxNCBAQCBl
bnVtIE1lZGlhTGlzdFNvdXJjZSB7CiAgICAgTWVkaWFMaXN0U291cmNlSW1wb3J0UnVsZQogfTsK
IAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VS
YW5nZT4gYnVpbGRTb3VyY2VSYW5nZU9iamVjdChjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UsIFZl
Y3RvcjxzaXplX3Q+KiBsaW5lRW5kaW5ncykKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3Qg
U291cmNlUmFuZ2UmIHJhbmdlLCBWZWN0b3I8c2l6ZV90PiogbGluZUVuZGluZ3MpCiB7CiAgICAg
aWYgKCFsaW5lRW5kaW5ncykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgVGV4dFBvc2l0
aW9uIHN0YXJ0ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNl
dChyYW5nZS5zdGFydCwgKmxpbmVFbmRpbmdzKTsKICAgICBUZXh0UG9zaXRpb24gZW5kID0gQ29u
dGVudFNlYXJjaFV0aWxpdGllczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5lbmQsICps
aW5lRW5kaW5ncyk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
b3VyY2VSYW5nZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VS
YW5nZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTb3Vy
Y2VSYW5nZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTb3VyY2VSYW5nZTo6
Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXJ0TGluZShzdGFydC5tX2xpbmUuemVyb0Jhc2VkSW50
KCkpCiAgICAgICAgIC5zZXRTdGFydENvbHVtbihzdGFydC5tX2NvbHVtbi56ZXJvQmFzZWRJbnQo
KSkKICAgICAgICAgLnNldEVuZExpbmUoZW5kLm1fbGluZS56ZXJvQmFzZWRJbnQoKSkKQEAgLTE2
MywyNiArMTYzLDI2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6U291cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplCiAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTTWVkaWE+IGJ1aWxkTWVkaWFPYmplY3QoY29uc3QgTWVkaWFMaXN0KiBtZWRp
YSwgTWVkaWFMaXN0U291cmNlIG1lZGlhTGlzdFNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlh
PiBidWlsZE1lZGlhT2JqZWN0KGNvbnN0IE1lZGlhTGlzdCogbWVkaWEsIE1lZGlhTGlzdFNvdXJj
ZSBtZWRpYUxpc3RTb3VyY2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIC8vIE1h
a2UgY2VydGFpbiBjb21waWxlcnMgaGFwcHkgYnkgaW5pdGlhbGl6aW5nIHxzb3VyY2V8IHVwLWZy
b250LgotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZSBz
b3VyY2UgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6Oklu
bGluZVNoZWV0OworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE6OlNvdXJj
ZSBzb3VyY2UgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6Oklu
bGluZVNoZWV0OwogICAgIHN3aXRjaCAobWVkaWFMaXN0U291cmNlKSB7CiAgICAgY2FzZSBNZWRp
YUxpc3RTb3VyY2VNZWRpYVJ1bGU6Ci0gICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZTo6TWVkaWFSdWxlOworICAgICAgICBzb3VyY2Ug
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6Ok1lZGlhUnVsZTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VJbXBvcnRSdWxlOgotICAg
ICAgICBzb3VyY2UgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3Vy
Y2U6OkltcG9ydFJ1bGU7CisgICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTTWVkaWE6OlNvdXJjZTo6SW1wb3J0UnVsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYUxpc3RTb3VyY2VMaW5rZWRTaGVldDoKLSAgICAgICAgc291cmNlID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpMaW5rZWRTaGVldDsKKyAgICAg
ICAgc291cmNlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpM
aW5rZWRTaGVldDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VJbmxp
bmVTaGVldDoKLSAgICAgICAgc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKKyAgICAgICAgc291cmNlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTTWVkaWE+IG1lZGlhT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NN
ZWRpYTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NN
ZWRpYT4gbWVkaWFPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhOjpj
cmVhdGUoKQogICAgICAgICAuc2V0VGV4dChtZWRpYS0+bWVkaWFUZXh0KCkpCiAgICAgICAgIC5z
ZXRTb3VyY2Uoc291cmNlKTsKIApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1J1bGVMaXN0PiBhc0NTU1J1bGVMaXN0KENTU1J1bGUqIHJ1bGUpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxl
LCBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPiogbWVkaWFBcnJh
eSkKK3N0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPiogbWVkaWFBcnJheSkKIHsKICAgICBN
ZWRpYUxpc3QqIG1lZGlhTGlzdDsKICAgICBDU1NSdWxlKiBwYXJlbnRSdWxlID0gcnVsZTsKQEAg
LTMwNiwxMSArMzA2LDExIEBAIEluc3BlY3RvclN0eWxlOjp+SW5zcGVjdG9yU3R5bGUoKQogewog
fQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2Jq
ZWN0Rm9yU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBzdHlsZVdpdGhQcm9wZXJ0aWVzKCk7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IHN0eWxlV2l0
aFByb3BlcnRpZXMoKTsKICAgICBpZiAoIW1fc3R5bGVJZC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
c3VsdC0+c2V0U3R5bGVJZChtX3N0eWxlSWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVJZD4oKSk7CisgICAgICAgIHJlc3VsdC0+c2V0U3R5bGVJ
ZChtX3N0eWxlSWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U3R5bGVJZD4oKSk7CiAKICAgICByZXN1bHQtPnNldFdpZHRoKG1fc3R5bGUtPmdldFByb3BlcnR5
VmFsdWUoIndpZHRoIikpOwogICAgIHJlc3VsdC0+c2V0SGVpZ2h0KG1fc3R5bGUtPmdldFByb3Bl
cnR5VmFsdWUoImhlaWdodCIpKTsKQEAgLTMyMiwxNSArMzIyLDE1IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxk
T2JqZWN0Rm9yCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZv
ckNvbXB1dGVkU3R5bGUoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+
IEluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gcmVzdWx0ID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21w
dXRlZFN0eWxlUHJvcGVydHk+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJv
cGVydHk+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT46OmNyZWF0ZSgpOwogICAgIFZl
Y3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxs
UHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKICAgICBmb3IgKFZlY3RvcjxJbnNwZWN0b3JTdHls
ZVByb3BlcnR5Pjo6aXRlcmF0b3IgaXQgPSBwcm9wZXJ0aWVzLmJlZ2luKCksIGl0RW5kID0gcHJv
cGVydGllcy5lbmQoKTsgaXQgIT0gaXRFbmQ7ICsraXQpIHsKICAgICAgICAgY29uc3QgQ1NTUHJv
cGVydHlTb3VyY2VEYXRhJiBwcm9wZXJ0eUVudHJ5ID0gaXQtPnNvdXJjZURhdGE7Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9w
ZXJ0eT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5
bGVQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiBlbnRyeSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAg
LnNldE5hbWUocHJvcGVydHlFbnRyeS5uYW1lKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3Bl
cnR5RW50cnkudmFsdWUpOwogICAgICAgICByZXN1bHQtPmFkZEl0ZW0oZW50cnkpOwpAQCAtNTA5
LDE0ICs1MDksMTQgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aWVz
KFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiogcmVzdWwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJ
bnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0CitQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdp
dGhQcm9wZXJ0aWVzKCkgY29uc3QKIHsKICAgICBWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0
eT4gcHJvcGVydGllczsKICAgICBwb3B1bGF0ZUFsbFByb3BlcnRpZXMoJnByb3BlcnRpZXMpOwog
Ci0gICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVy
dHk+PiBwcm9wZXJ0aWVzT2JqZWN0ID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5Pj4gc2hvcnRoYW5kRW50cmllcyA9IEFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsK
LSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHk+PiBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CisgICAg
UmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9w
ZXJ0aWVzT2JqZWN0ID0gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0
eT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlNob3J0aGFuZEVudHJ5Pj4gc2hvcnRoYW5kRW50cmllcyA9IEFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKKyAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0
eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CiAgICAgSGFzaFNldDxTdHJpbmc+IGZvdW5k
U2hvcnRoYW5kczsKICAgICBTdHJpbmcgcHJldmlvdXNQcmlvcml0eTsKICAgICBTdHJpbmcgcHJl
dmlvdXNTdGF0dXM7CkBAIC01MzAsMTMgKzUzMCwxMyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9w
ZQogCiAgICAgICAgIC8vIFZpc3VhbCBTdHVkaW8gZGlzYWdyZWVzIHdpdGggb3RoZXIgY29tcGls
ZXJzIGFzIHRvIHdoZXRoZXIgJ2NsYXNzJyBpcyBuZWVkZWQgaGVyZS4KICNpZiBDT01QSUxFUihN
U1ZDKQotICAgICAgICBlbnVtIGNsYXNzIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHlTdGF0dXMgc3RhdHVzOworICAgICAgICBlbnVtIGNsYXNzIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMgc3RhdHVzOwogI2Vsc2UKLSAgICAgICAgZW51
bSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzIHN0YXR1czsK
KyAgICAgICAgZW51bSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVz
IHN0YXR1czsKICNlbmRpZgotICAgICAgICBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpEaXNhYmxlZCA6IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZTsKKyAgICAg
ICAgc3RhdHVzID0gaXQtPmRpc2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQ
cm9wZXJ0eVN0YXR1czo6RGlzYWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5U3RhdHVzOjpBY3RpdmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKG5hbWUu
bG93ZXIoKSkKICAgICAgICAgICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKTsKIApA
QCAtNTY5LDIyICs1NjksMjIgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGUKICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOwogICAg
ICAgICAgICAgICAgIC8vIENhbm9uaWNhbGl6ZSBwcm9wZXJ0eSBuYW1lcyB0byB0cmVhdCBub24t
cHJlZml4ZWQgYW5kIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyB0aGUgc2FtZSAob3Bh
Y2l0eSB2cy4gLXdlYmtpdC1vcGFjaXR5KS4KICAgICAgICAgICAgICAgICBTdHJpbmcgY2Fub25p
Y2FsUHJvcGVydHlOYW1lID0gcHJvcGVydHlJZCA/IGdldFByb3BlcnR5TmFtZVN0cmluZyhwcm9w
ZXJ0eUlkKSA6IG5hbWU7Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj46Oml0ZXJhdG9yIGFjdGl2
ZUl0ID0gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LmZpbmQoY2Fub25pY2Fs
UHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRlcmF0b3IgYWN0aXZlSXQg
PSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdCAhPSBwcm9wZXJ0eU5hbWVU
b1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHByb3BlcnR5RW50cnkucGFyc2VkT2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
c3VjY2Vzc1ByaW9yaXR5ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UHJpb3JpdHksICZwcmV2aW91c1ByaW9yaXR5
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1N0YXR1cyA9IGFjdGl2ZUl0
LT52YWx1ZS0+Z2V0U3RyaW5nKEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVy
dHk6OlN0YXR1cywgJnByZXZpb3VzU3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc3VjY2Vzc1ByaW9yaXR5ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6UHJpb3JpdHksICZwcmV2aW91c1ByaW9yaXR5
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1N0YXR1cyA9IGFjdGl2ZUl0
LT52YWx1ZS0+Z2V0U3RyaW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6
OlN0YXR1cywgJnByZXZpb3VzU3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dWNjZXNzU3RhdHVzICYmIHByZXZpb3VzU3RhdHVzICE9ICJpbmFjdGl2ZSIpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlFbnRyeS5pbXBvcnRhbnQgfHwgIXN1Y2Nl
c3NQcmlvcml0eSkgLy8gUHJpb3JpdHkgbm90IHNldCA9PSAibm90IGltcG9ydGFudCIuCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3RpdmUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6QWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEluYWN0aXZhdGUgYSBub24taW1wb3J0YW50IHByb3BlcnR5IGZvbGxvd2lu
ZyB0aGUgc2FtZS1uYW1lZCBpbXBvcnRhbnQgcHJvcGVydHkuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJv
cGVydHlTdGF0dXM6OkluYWN0aXZlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0dXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFj
dGl2ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHByZXZpb3VzUGFyc2VkT2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29s
IHN1Y2Nlc3MgPSBhY3RpdmVJdC0+dmFsdWUtPmdldEJvb2xlYW4oSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UGFyc2VkT2ssICZwcmV2aW91c1BhcnNlZE9rKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0
Qm9vbGVhbihJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpQYXJzZWRPaywg
JnByZXZpb3VzUGFyc2VkT2spOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3Mg
JiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
SW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTU5Miw3ICs1OTIs
NyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwg
cHJvcGVydHkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOworICAgICAgICAg
ICAgICAgICAgICBhY3RpdmVJdC0+dmFsdWUtPnNldFN0YXR1cyhJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFjdGl2ZSk7CiAgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVy
dHlOYW1lLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTYwMCwxMyArNjAwLDEzIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlCiAgICAgICAg
ICAgICAgICAgLy8gRGVmYXVsdCAiaW1wbGljaXQiID09IGZhbHNlLgogICAgICAgICAgICAgICAg
IGlmIChpbXBsaWNpdCkKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHktPnNldEltcGxpY2l0
KHRydWUpOwotICAgICAgICAgICAgICAgIHN0YXR1cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OlN0eWxlOworICAgICAgICAgICAgICAgIHN0YXR1cyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OlN0eWxlOwogCiAg
ICAgICAgICAgICAgICAgU3RyaW5nIHNob3J0aGFuZCA9IG1fc3R5bGUtPmdldFByb3BlcnR5U2hv
cnRoYW5kKG5hbWUpOwogICAgICAgICAgICAgICAgIGlmICghc2hvcnRoYW5kLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU2hvcnRoYW5kcy5jb250YWlucyhzaG9y
dGhhbmQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFNob3J0aGFuZHMuYWRkKHNo
b3J0aGFuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+IGVudHJ5
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTaG9ydGhhbmRFbnRyeTo6Y3JlYXRlKCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShzaG9ydGhhbmQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHNob3J0aGFuZFZhbHVlKHNob3J0aGFuZCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kRW50cmllcy0+YWRkSXRlbShlbnRyeSk7
CkBAIC02MTYsMTEgKzYxNiwxMSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZQogICAgICAgICB9
CiAKICAgICAgICAgLy8gRGVmYXVsdCAic3RhdHVzIiA9PSAic3R5bGUiLgotICAgICAgICBpZiAo
c3RhdHVzICE9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6
OlN0eWxlKQorICAgICAgICBpZiAoc3RhdHVzICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTUHJvcGVydHlTdGF0dXM6OlN0eWxlKQogICAgICAgICAgICAgcHJvcGVydHktPnNldFN0YXR1
cyhzdGF0dXMpOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1N0eWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUo
KQogICAgICAgICAuc2V0Q3NzUHJvcGVydGllcyhwcm9wZXJ0aWVzT2JqZWN0KQogICAgICAgICAu
c2V0U2hvcnRoYW5kRW50cmllcyhzaG9ydGhhbmRFbnRyaWVzKTsKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKQEAgLTc1NSw3ICs3NTUsNyBAQCBOZXdMaW5lQW5kV2hpdGVzcGFjZSYgSW5z
cGVjdG9yU3R5bGU6Om5ld0xpbmVBbmRXaGl0ZXNwYWNlRGVsaW1pdGVycygpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZm9ybWF0OwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwg
Y29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVl
dCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUoSW5zcGVj
dG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVy
KiBsaXN0ZW5lcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvclN0eWxlU2hl
ZXQocGFnZUFnZW50LCBpZCwgcGFnZVN0eWxlU2hlZXQsIG9yaWdpbiwgZG9jdW1lbnRVUkwsIGxp
c3RlbmVyKSk7CiB9CkBAIC03NjgsNyArNzY4LDcgQEAgU3RyaW5nIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OnN0eWxlU2hlZXRVUkwoQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpCiAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0
eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQs
IFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9j
dW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3RvclN0eWxlU2hlZXQ6Okluc3Bl
Y3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
ZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICA6IG1fcGFnZUFnZW50KHBhZ2VB
Z2VudCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX3BhZ2VTdHlsZVNoZWV0KHBhZ2VTdHlsZVNo
ZWV0KQpAQCAtOTU5LDcgKzk1OSw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVl
dDo6cnVsZUZvcklkKGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCkgY29uc3QKIAogfQogCi1QYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpCitQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IEluc3BlY3RvclN0
eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpCiB7CiAgICAgQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCA9IHBhZ2VTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQpA
QCAtOTY3LDcgKzk2Nyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6CiAKICAgICBSZWZQdHI8
Q1NTUnVsZUxpc3Q+IGNzc1J1bGVMaXN0ID0gYXNDU1NSdWxlTGlzdChzdHlsZVNoZWV0KTsKIAot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5
PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5
OjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
U2hlZXRCb2R5PiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hl
ZXRCb2R5OjpjcmVhdGUoKQogICAgICAgICAuc2V0U3R5bGVTaGVldElkKGlkKCkpCiAgICAgICAg
IC5zZXRSdWxlcyhidWlsZEFycmF5Rm9yUnVsZUxpc3QoY3NzUnVsZUxpc3QuZ2V0KCkpKTsKIApA
QCAtOTc5LDcgKzk3OSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZVNoZWV0Qm9keT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6CiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVj
dEZvclN0eWxlU2hlZXRJbmZvKCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZv
clN0eWxlU2hlZXRJbmZvKCkKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFn
ZVN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXN0eWxlU2hlZXQpCkBAIC05ODcsNyArOTg3LDcgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFk
ZXI+IEluc3BlY3RvclN0eWxlU2hlZXQKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0eWxl
U2hlZXQtPm93bmVyRG9jdW1lbnQoKTsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCA/IGRv
Y3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gcmVzdWx0ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyOjpjcmVhdGUoKQogICAg
ICAgICAuc2V0U3R5bGVTaGVldElkKGlkKCkpCiAgICAgICAgIC5zZXRPcmlnaW4obV9vcmlnaW4p
CiAgICAgICAgIC5zZXREaXNhYmxlZChzdHlsZVNoZWV0LT5kaXNhYmxlZCgpKQpAQCAtOTk4LDEw
ICs5OTgsMTAgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxlU2hlZXQKICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0
YSogc291cmNlRGF0YSwgY29uc3QgU3RyaW5nJiBzaGVldFRleHQpCitzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNl
KGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0
VGV4dCkKIHsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcmVzc2lvbiwgY29tbWVudCwgKCIvXFwqW15dKj9cXCovIiwgVGV4dENhc2VTZW5z
aXRpdmUsIEpTQzo6WWFycjo6TXVsdGlsaW5lRW5hYmxlZCkpOwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgU2VsZWN0b3JSYW5nZUxpc3QmIHJhbmdl
cyA9IHNvdXJjZURhdGEtPnNlbGVjdG9yUmFuZ2VzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gcmFuZ2VzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBTb3Vy
Y2VSYW5nZSYgcmFuZ2UgPSByYW5nZXMuYXQoaSk7CkBAIC0xMDE0LDEyICsxMDE0LDEyIEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNl
bGVjdG9yc0Zyb21Tb3VyY2UoY29uCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVs
ZSogcnVsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxp
c3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0
eWxlUnVsZSogcnVsZSkKIHsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURh
dGE7CiAgICAgaWYgKGVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQogICAgICAgICBzb3VyY2VEYXRh
ID0gcnVsZVNvdXJjZURhdGFGb3IocnVsZS0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9yczsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzOwogCiAgICAgLy8gVGhp
cyBpbnRlbnRpb25hbGx5IGRvZXMgbm90IHJlbHkgb24gdGhlIHNvdXJjZSBkYXRhIHRvIGF2b2lk
IGNhdGNoaW5nIHRoZSB0cmFpbGluZyBjb21tZW50cyAoYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiBz
dGFydGluZyAneycpLgogICAgIFN0cmluZyBzZWxlY3RvclRleHQgPSBydWxlLT5zZWxlY3RvclRl
eHQoKTsKQEAgLTEwMjcsMTIgKzEwMjcsMTIgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGQKICAg
ICBpZiAoc291cmNlRGF0YSkKICAgICAgICAgc2VsZWN0b3JzID0gc2VsZWN0b3JzRnJvbVNvdXJj
ZShzb3VyY2VEYXRhLmdldCgpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHNlbGVjdG9ycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz46OmNyZWF0ZSgpOworICAgICAgICBzZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0
JiBzZWxlY3Rvckxpc3QgPSBydWxlLT5zdHlsZVJ1bGUoKS0+c2VsZWN0b3JMaXN0KCk7CiAgICAg
ICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0
KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3Rvcikp
CiAgICAgICAgICAgICBzZWxlY3RvcnMtPmFkZEl0ZW0oc2VsZWN0b3ItPnNlbGVjdG9yVGV4dCgp
KTsKICAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0
b3JMaXN0PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlz
dDo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rv
ckxpc3Q+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0Ojpj
cmVhdGUoKQogICAgICAgICAuc2V0U2VsZWN0b3JzKHNlbGVjdG9ycykKICAgICAgICAgLnNldFRl
eHQoc2VsZWN0b3JUZXh0KQogICAgICAgICAucmVsZWFzZSgpOwpAQCAtMTA0MSwyOSArMTA0MSwy
OSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0
PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4g
SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSogcnVs
ZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQogewog
ICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlm
ICghc3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NSdWxlOjpjcmVhdGUoKQogICAgICAgICAuc2V0U2VsZWN0b3JMaXN0KGJ1aWxkT2JqZWN0
Rm9yU2VsZWN0b3JMaXN0KHJ1bGUpKQogICAgICAgICAuc2V0U291cmNlTGluZShydWxlLT5zdHls
ZVJ1bGUoKS0+c291cmNlTGluZSgpKQogICAgICAgICAuc2V0T3JpZ2luKG1fb3JpZ2luKQogICAg
ICAgICAuc2V0U3R5bGUoYnVpbGRPYmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgpKSk7CiAKICAg
ICAvLyAic291cmNlVVJMIiBpcyBwcmVzZW50IG9ubHkgZm9yIHJlZ3VsYXIgcnVsZXMsIG90aGVy
d2lzZSAib3JpZ2luIiBzaG91bGQgYmUgdXNlZCBpbiB0aGUgZnJvbnRlbmQuCi0gICAgaWYgKG1f
b3JpZ2luID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6
UmVndWxhcikKKyAgICBpZiAobV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyKQogICAgICAgICByZXN1bHQtPnNldFNvdXJjZVVSTChm
aW5hbFVSTCgpKTsKIAogICAgIGlmIChjYW5CaW5kKCkpIHsKICAgICAgICAgSW5zcGVjdG9yQ1NT
SWQgaWQocnVsZUlkKHJ1bGUpKTsKICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1Byb3RvY29sVmFsdWU8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NSdWxlSWQ+KCkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRSdWxl
SWQoaWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZUlk
PigpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NNZWRpYT4+IG1lZGlhQXJyYXkgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkNTU01lZGlhPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE+PiBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwogCiAgICAgZmlsbE1lZGlhTGlzdENo
YWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwogICAgIGlmIChtZWRpYUFycmF5LT5sZW5ndGgo
KSkKQEAgLTEwNzIsNyArMTA3Miw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JT
dHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RG
b3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTUnVs
ZVNvdXJjZURhdGE+IHNvdXJjZURhdGE7CiAgICAgaWYgKGVuc3VyZVBhcnNlZERhdGFSZWFkeSgp
KQpAQCAtMTA4MCwxMyArMTA4MCwxMyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZQogCiAgICAg
SW5zcGVjdG9yQ1NTSWQgaWQgPSBydWxlT3JTdHlsZUlkKHN0eWxlKTsKICAgICBpZiAoaWQuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBib2d1c1N0eWxlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKEFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkKLSAgICAgICAgICAg
IC5zZXRTaG9ydGhhbmRFbnRyaWVzKEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKSk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlPiBib2d1c1N0eWxlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZTo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKEFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkKKyAg
ICAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKSk7CiAgICAgICAgIHJldHVybiBib2d1c1N0
eWxlLnJlbGVhc2UoKTsKICAgICB9CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0
b3JTdHlsZSA9IGluc3BlY3RvclN0eWxlRm9ySWQoaWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZS0+YnVp
bGRPYmplY3RGb3JTdHlsZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgp
OwogCiAgICAgLy8gU3R5bGUgdGV4dCBjYW5ub3QgYmUgcmV0cmlldmVkIHdpdGhvdXQgc3R5bGVz
aGVldCwgc28gc2V0IGNzc1RleHQgaGVyZS4KICAgICBpZiAoc291cmNlRGF0YSkgewpAQCAtMTM3
MCw3ICsxMzcwLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpvcmlnaW5hbFN0eWxlU2hl
ZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogCiBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6
OnJlc291cmNlU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fb3JpZ2luID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdp
bjo6VXNlciB8fCBtX29yaWdpbiA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW46OlVzZXJBZ2VudCkKKyAgICBpZiAobV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyIHx8IG1fb3JpZ2luID09IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcGFnZVN0eWxlU2hlZXQgfHwgIW93bmVyRG9j
dW1lbnQoKSB8fCAhb3duZXJEb2N1bWVudCgpLT5mcmFtZSgpKQpAQCAtMTM5OCw5ICsxMzk4LDkg
QEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4dChTdHJpbmcq
IHJlc3VsdCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxp
c3QqIHJ1bGVMaXN0KQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQogewotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1J1bGU+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxl
Pj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFydWxlTGlzdCkKICAgICAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAKQEAgLTE0MzIsMTIgKzE0MzIsMTIgQEAgdm9pZCBJ
bnNwZWN0b3JTdHlsZVNoZWV0Ojpjb2xsZWN0RmxhdFJ1bGVzKFBhc3NSZWZQdHI8Q1NTUnVsZUxp
c3Q+IHJ1bGVMaXN0LCBDU1MKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNy
ZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFz
c1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0
eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitQYXNzUmVmUHRyPElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KHBhZ2VBZ2VudCwgaWQsIGVsZW1lbnQsIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0KIAotSW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBh
c3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQorSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUo
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIDogSW5zcGVjdG9yU3R5bGVT
aGVldChwYWdlQWdlbnQsIGlkLCBudWxscHRyLCBvcmlnaW4sICIiLCBsaXN0ZW5lcikKICAgICAs
IG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9ydWxlU291cmNlRGF0YShudWxscHRyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggMGNh
NWE1M2FlZTVjMzgzM2ZmOTg1YjliMTM1Nzk0MzA5ODcyMDU2ZS4uNDE4M2I5NDFmYTAwNDZmMGM1
YjBkMjcyN2ZlYTk2ZGE0M2YxY2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JTdHlsZVRleHRFZGl0b3IuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVp
bGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNoZWV0
SWQ7IH0KICAgICB1bnNpZ25lZCBvcmRpbmFsKCkgY29uc3QgeyByZXR1cm4gbV9vcmRpbmFsOyB9
CiAKLSAgICAvLyBJRCB0eXBlIGlzIGVpdGhlciBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlSWQgb3IgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlSWQuCisg
ICAgLy8gSUQgdHlwZSBpcyBlaXRoZXIgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZUlkIG9yIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZUlkLgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIElEPgogICAgIFBhc3NSZWZQdHI8SUQ+IGFzUHJvdG9jb2xWYWx1ZSgpIGNvbnN0
CiAgICAgewpAQCAtMTM5LDggKzEzOSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JTdHlsZSgpOwogCiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3NzU3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3Q7Ci0gICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21w
dXRlZFN0eWxlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNEaXNhYmxlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9k
aXNhYmxlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQo
dW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmlu
Zyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgdG9nZ2xlUHJvcGVydHkodW5z
aWduZWQgaW5kZXgsIGJvb2wgZGlzYWJsZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMTU2LDcgKzE1
Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhcHBseVN0eWxlVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpIHsgRXhjZXB0aW9uQ29kZSBlYyA9IDA7IHJldHVybiBzZXRUZXh0KHRleHQsIGVjKTsgfQog
CiAgICAgYm9vbCBwb3B1bGF0ZUFsbFByb3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJv
cGVydHk+KiByZXN1bHQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJv
cGVydGllcygpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGV4dHJh
Y3RTb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNob3J0aGFuZFZhbHVlKGNvbnN0IFN0
cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwogICAgIFN0cmluZyBzaG9ydGhhbmRQcmlv
cml0eShjb25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKQEAgLTE4MSw3ICsx
ODEsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZURl
Y2xhcmF0aW9uKiwgUmVmUHRyPEluc3BlY3RvclN0eWxlPj4gSW5zcGVjdG9yU3R5bGVNYXA7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gY3JlYXRlKEluc3BlY3Rv
clBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
cGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50
KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVT
aGVldCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciopOwogICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVT
aGVldFVSTChDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCk7CiAKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JTdHlsZVNoZWV0KCk7CkBAIC0xOTYsMTAgKzE5NiwxMCBAQCBwdWJsaWM6CiAgICAg
Q1NTU3R5bGVSdWxlKiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBib29sIGRlbGV0ZVJ1bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgQ1NTU3R5bGVSdWxlKiBydWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGVTaGVldEJvZHk+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOwotICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBi
dWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1
bGUqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+IGJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopOworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gYnVpbGRP
YmplY3RGb3JTdHlsZVNoZWV0KCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8o
KTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVp
bGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURl
Y2xhcmF0aW9uKik7CiAgICAgYm9vbCBzZXRTdHlsZVRleHQoY29uc3QgSW5zcGVjdG9yQ1NTSWQm
LCBjb25zdCBTdHJpbmcmIHRleHQsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGJvb2wgc2V0UHJvcGVydHlUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiwgdW5zaWduZWQg
cHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5n
KiBvbGRQcm9wZXJ0eVRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHRvZ2dsZVByb3Bl
cnR5KGNvbnN0IEluc3BlY3RvckNTU0lkJiwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgYm9vbCBk
aXNhYmxlLCBFeGNlcHRpb25Db2RlJik7CkBAIC0yMTIsOSArMjEyLDkgQEAgcHVibGljOgogICAg
IEluc3BlY3RvckNTU0lkIHN0eWxlSWQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0
IHsgcmV0dXJuIHJ1bGVPclN0eWxlSWQoc3R5bGUpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNw
ZWN0b3JTdHlsZVNoZWV0KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBh
c3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwg
TGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3RvclBhZ2VBZ2VudCos
IGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hl
ZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKIAotICAgIGJvb2wgY2FuQmluZCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6VXNlckFnZW50ICYmIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlcjsgfQorICAgIGJvb2wgY2FuQmluZCgpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6VXNlckFnZW50ICYmIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlcjsgfQogICAgIEluc3BlY3RvckNTU0lkIHJ1bGVP
clN0eWxlSWQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0OwogICAgIHZpcnR1YWwg
RG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDU1NS
dWxlU291cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGUpIGNvbnN0OwpAQCAtMjQyLDEzICsyNDIsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG9yaWdp
bmFsU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgcmVzb3Vy
Y2VTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCBpbmxpbmVT
dHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU+PiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKLSAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBidWlsZE9iamVj
dEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4+IGJ1
aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JM
aXN0KENTU1N0eWxlUnVsZSopOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2Vu
dDsKICAgICBTdHJpbmcgbV9pZDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlU3R5
bGVTaGVldDsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW4gbV9vcmlnaW47CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luIG1fb3JpZ2luOwogICAgIFN0cmluZyBtX2RvY3VtZW50VVJMOwogICAgIGJvb2wgbV9pc1Jl
dmFsaWRhdGluZzsKICAgICBQYXJzZWRTdHlsZVNoZWV0KiBtX3BhcnNlZFN0eWxlU2hlZXQ7CkBA
IC0yNTksMTQgKzI1OSwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUgOiBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBj
cmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxF
bGVtZW50PiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBM
aXN0ZW5lciopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZT4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQs
IFBhc3NSZWZQdHI8RWxlbWVudD4sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbiwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0
ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVF9VTlVTRUQoaWQsICFp
ZC5vcmRpbmFsKCkpOyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNv
bnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4sIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBp
ZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNo
ZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiBydWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Qg
b3ZlcnJpZGUgeyBBU1NFUlRfVU5VU0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsg
cmV0dXJuIG1fcnVsZVNvdXJjZURhdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBhY2U1NjNmZTYyOTEzZmNhZWUw
MjNiYzc1MmVkMTFmOTc2MmQyNTE0Li5iYzQ5NmQwMzFhYTEyNzdjNDE3ZTczMWYxNzA1ZGJiODBl
ZWNjZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC01NTQsOTkgKzU1NCw5OSBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSQogICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2Jl
U2FtcGxlRGF0YShhY3Rpb24sIGhpdENvdW50KSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQcm9iZVNh
bXBsZSwgZmFsc2UsIGZyYW1lRnJvbUV4ZWNTdGF0ZShleGVjKSk7CiB9CiAKLXN0YXRpYyBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxp
bmVSZWNvcmRUeXBlIHR5cGUpCitzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6
OkV2ZW50VHlwZSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpFdmVudERpc3BhdGNo
OgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50
VHlwZTo6RXZlbnREaXNwYXRjaDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRpbWVsaW5lOjpFdmVudFR5cGU6OkV2ZW50RGlzcGF0Y2g7CiAgICAgY2FzZSBUaW1lbGluZVJl
Y29yZFR5cGU6OlNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uOgotICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVTdHlsZVJl
Y2FsY3VsYXRpb247CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbjsKICAgICBjYXNlIFRpbWVs
aW5lUmVjb3JkVHlwZTo6UmVjYWxjdWxhdGVTdHlsZXM6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZWNhbGN1bGF0ZVN0eWxlczsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6
OlJlY2FsY3VsYXRlU3R5bGVzOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpJbnZhbGlk
YXRlTGF5b3V0OgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6SW52YWxpZGF0ZUxheW91dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkludmFsaWRhdGVMYXlvdXQ7CiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OkxheW91dDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkxheW91dDsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkxheW91dDsKICAg
ICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFpbnQ6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpQYWludDsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhaW50OwogICAg
IGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpTY3JvbGxMYXllcjoKLSAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjcm9sbExheWVyOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
U2Nyb2xsTGF5ZXI7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc2l6ZUltYWdlOgot
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6UmVzaXplSW1hZ2U7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpSZXNpemVJbWFnZTsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRU
eXBlOjpQYXJzZUhUTUw6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpQYXJzZUhUTUw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpQYXJzZUhUTUw7CiAKICAgICBjYXNlIFRp
bWVsaW5lUmVjb3JkVHlwZTo6VGltZXJJbnN0YWxsOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJJbnN0YWxsOworICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJJ
bnN0YWxsOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lclJlbW92ZToKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRp
bWVyUmVtb3ZlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6VGltZXJSZW1vdmU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRp
bWVyRmlyZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OlRpbWVyRmlyZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVyRmlyZTsKIAogICAgIGNhc2UgVGltZWxpbmVS
ZWNvcmRUeXBlOjpFdmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkV2YWx1YXRlU2NyaXB0OworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZhbHVhdGVT
Y3JpcHQ7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6TWFya0xvYWQ6Ci0gICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJr
TG9hZDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6Ok1hcmtMb2FkOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpNYXJrRE9NQ29u
dGVudDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpF
dmVudFR5cGU6Ok1hcmtET01Db250ZW50OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6TWFya0RPTUNvbnRlbnQ7CiAKICAgICBjYXNlIFRp
bWVsaW5lUmVjb3JkVHlwZTo6VGltZVN0YW1wOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOworICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOwog
ICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lOgotICAgICAgICByZXR1cm4gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZTsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWU7CiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVFbmQ6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lRW5kOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZUVuZDsK
IAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpTY2hlZHVsZVJlc291cmNlUmVxdWVzdDoK
LSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q7CiAg
ICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0gICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNv
dXJjZVNlbmRSZXF1ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VTZW5kUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5l
UmVjb3JkVHlwZTo6UmVzb3VyY2VSZWNlaXZlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVS
ZXNwb25zZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpF
dmVudFR5cGU6OlJlc291cmNlUmVjZWl2ZVJlc3BvbnNlOwogICAgIGNhc2UgVGltZWxpbmVSZWNv
cmRUeXBlOjpSZXNvdXJjZVJlY2VpdmVkRGF0YToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNlUmVjZWl2ZWREYXRhOwor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
UmVzb3VyY2VSZWNlaXZlZERhdGE7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291
cmNlRmluaXNoOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VGaW5pc2g7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZUZpbmlzaDsKIAogICAgIGNh
c2UgVGltZWxpbmVSZWNvcmRUeXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOgotICAgICAgICByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6WEhSUmVhZHlT
dGF0ZUNoYW5nZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OlhIUlJlYWR5U3RhdGVDaGFuZ2U7CiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OlhIUkxvYWQ6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpYSFJMb2FkOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6WEhSTG9hZDsKIAogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpGdW5jdGlvbkNhbGw6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CisgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNh
bGw7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlOgotICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UHJvYmVT
YW1wbGU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZl
bnRUeXBlOjpQcm9iZVNhbXBsZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29s
ZVByb2ZpbGU6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpDb25zb2xlUHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNvbnNvbGVQcm9maWxlOwogCiAgICAgY2Fz
ZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZToKLSAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlcXVlc3RB
bmltYXRpb25GcmFtZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5l
UmVjb3JkVHlwZTo6Q2FuY2VsQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDYW5jZWxBbmltYXRpb25GcmFt
ZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OkNhbmNlbEFuaW1hdGlvbkZyYW1lOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpG
aXJlQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGaXJlQW5pbWF0aW9u
RnJhbWU7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0Q3JlYXRlOgot
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6V2ViU29ja2V0Q3JlYXRlOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0Q3JlYXRlOwogICAgIGNhc2UgVGltZWxpbmVS
ZWNvcmRUeXBlOjpXZWJTb2NrZXRTZW5kSGFuZHNoYWtlUmVxdWVzdDoKLSAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFNl
bmRIYW5kc2hha2VSZXF1ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0U2VuZEhhbmRzaGFrZVJlcXVlc3Q7CiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNwb25z
ZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZTsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFJlY2Vp
dmVIYW5kc2hha2VSZXNwb25zZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29j
a2V0RGVzdHJveToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OldlYlNvY2tldERlc3Ryb3k7CisgICAgICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXREZXN0cm95OwogICAg
IH0KIAotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpUaW1lU3RhbXA7CisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OlRpbWVTdGFtcDsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjphZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnBSZWNv
cmQsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewotICAgIHBycFJlY29yZC0+c2V0U3RyaW5n
KCJ0eXBlIiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUo
dG9Qcm90b2NvbCh0eXBlKSkpOworICAgIHBycFJlY29yZC0+c2V0U3RyaW5nKCJ0eXBlIiwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUodG9Qcm90b2NvbCh0eXBl
KSkpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1l
bGluZUV2ZW50PiByZWNvcmQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50Pjo6cnVudGltZUNhc3QocHJwUmVjb3JkKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29y
ZCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5l
RXZlbnQ+OjpydW50aW1lQ2FzdChwcnBSZWNvcmQpOwogCiAgICAgaWYgKG1fcmVjb3JkU3RhY2su
aXNFbXB0eSgpKQogICAgICAgICBzZW5kRXZlbnQocmVjb3JkLnJlbGVhc2UoKSk7CkBAIC03MTQs
NyArNzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZW5kRXZlbnQoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBG
SVhNRTogcnVudGltZUNhc3QgaXMgYSBoYWNrLiBXZSBkbyBpdCBiZWNhdXNlIHdlIGNhbid0IGJ1
aWxkIFRpbWVsaW5lRXZlbnQgZGlyZWN0bHkgbm93LgotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD4gcmVjb3JkQ2hlY2tlZCA9IEJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+
OjpydW50aW1lQ2FzdChldmVudCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRp
bWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmRDaGVja2VkID0gQmluZGluZ1RyYWl0czxJbnNw
ZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudD46OnJ1bnRpbWVDYXN0KGV2
ZW50KTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXZlbnRSZWNvcmRlZChyZWNvcmRDaGVj
a2VkLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50LmNwcAppbmRleCBmMDVkNWRhMTUyZTEyNTYxYjM5N2NjZDdmMDEzMTMxYzM3NTJi
Zjc5Li5iOTlhMDNjNmUwNmZlOTMyYWM3MzViMzYwMjY1Y2EyODQwOGNhYjc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgogCi11c2luZyBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247Cit1c2luZyBJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247CiAK
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237083</attachid>
            <date>2014-08-25 07:21:42 -0700</date>
            <delta_ts>2014-08-25 07:21:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136031-20140825072124.patch</filename>
            <type>text/plain</type>
            <size>513411</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
N2Q5NzVkYWUyYWU4NDZjOTNiMzI4MjU0ZDRmNjcxOTU1ZjU1YmI3Li5iYzVkZWMxZWYwM2JkNWU5
YTMyYjZkNjJkYmMzMGE1MmZmYjhjOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMjkgQEAKIDIwMTQtMDgtMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyIHRvIEluc3BlY3Rvcjo6UHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90
aHkgSGF0Y2hlci4KKworICAgICAgICBSZW5hbWUgVHlwZUJ1aWxkZXIgbmFtZXNwYWNlIHRvIFBy
b3RvY29sLiBEaXNhbWJpZ3VhdGUgd2hlcmUKKyAgICAgICAgbmVjZXNzYXJ5LiBBbHNvIHJlbmFt
ZSBJbnNwZWN0b3JUeXBlQnVpbGRlciB0byBQcm90b2NvbFR5cGVzLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGlu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om1lc3NhZ2VT
b3VyY2VWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Om1lc3NhZ2VUeXBlVmFsdWUpOgorICAg
ICAgICAoSW5zcGVjdG9yOjptZXNzYWdlTGV2ZWxWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxpdGllcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFy
Y2hVdGlsaXRpZXM6OmJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0Y2gpOgorICAgICAgICAoSW5zcGVj
dG9yOjpDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpzZWFyY2hJblRleHRCeUxpbmVzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0OjpldmFsdWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpjYWxs
RnVuY3Rpb25Pbik6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0
ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldEZ1
bmN0aW9uRGV0YWlscyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldEludGVy
bmFsUHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFw
Q2FsbEZyYW1lcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwT2Jq
ZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0QmFzZTo6bWFrZUV2YWxDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRCYXNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OlNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
OjpidWlsZEluc3BlY3RvckFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6YnJl
YWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRl
dGFpbHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y3VycmVudENhbGxGcmFtZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcik6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGRJbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpidWlsZFByb2ZpbGVJbnNwZWN0b3JPYmpl
Y3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRDUFVQ
cm9maWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OmJ1aWxkRXJyb3JSYW5nZU9iamVjdCk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFy
aWFibGVzQXRPZmZzZXRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vX19pbml0
X18ucHk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNr
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQmFja2VuZERpc3BhdGNoZXJIZWFk
ZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToK
KyAgICAgICAgKEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVy
YXRlX2FzeW5jX2Rpc3BhdGNoZXJfY2xhc3NfZm9yX2RvbWFpbik6CisgICAgICAgIChCYWNrZW5k
RGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAo
RnJvbnRlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoRnJvbnRlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9y
X2V2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3R5
cGVfYnVpbGRlcl9oZWFkZXIucHk6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHk6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHk6Cisg
ICAgICAgIChHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGUpOgorICAgICAg
ICAoR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlX21lbWJlcik6CisgICAg
ICAgIChHZW5lcmF0b3IudHlwZV9zdHJpbmdfZm9yX3R5cGVfd2l0aF9uYW1lKToKKyAgICAgICAg
KEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3JfZm9ybWFsX291dF9wYXJhbWV0ZXIpOgorICAgICAg
ICAoR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9mb3JtYWxfYXN5bmNfcGFyYW1ldGVyKToKKyAg
ICAgICAgKEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3Jfc3RhY2tfaW5fcGFyYW1ldGVyKToKKyAg
ICAgICAgKEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3Jfc3RhY2tfb3V0X3BhcmFtZXRlcik6Cisg
ICAgICAgIChHZW5lcmF0b3IuYXNzZXJ0aW9uX21ldGhvZF9mb3JfdHlwZV9tZW1iZXIuYXNzZXJ0
aW9uX21ldGhvZF9mb3JfdHlwZSk6CisgICAgICAgIChHZW5lcmF0b3IuYXNzZXJ0aW9uX21ldGhv
ZF9mb3JfdHlwZV9tZW1iZXIpOgorICAgICAgICAoR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJp
bmdfZm9yX3R5cGUpOiBEZWxldGVkLgorICAgICAgICAoR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9z
dHJpbmdfZm9yX3R5cGVfbWVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisgICAgICAgIChJbnNwZWN0b3Ip
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2Nv
bC1iaW5kaW5ncy5weToKKyAgICAgICAgKGdlbmVyYXRlX2Zyb21fc3BlY2lmaWNhdGlvbik6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9u
YWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRp
b25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBl
Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMu
anNvbi1yZXN1bHQ6CisgICAgICAgICogcnVudGltZS9IaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpIaWdoRmlkZWxpdHlUeXBlUHJvZmlsZXI6OmdldFR5cGVzRm9y
VmFyaWFibGVBdE9mZnNldEZvckluc3BlY3Rvcik6CisgICAgICAgICogcnVudGltZS9IaWdoRmlk
ZWxpdHlUeXBlUHJvZmlsZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAg
ICAgICAoSlNDOjpUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBlTmFtZXMpOgorICAgICAgICAoSlND
OjpUeXBlU2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVTaGFwZTo6aW5zcGVjdG9yUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvVHlwZVNldC5oOgorCisyMDE0LTA4LTI0ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNo
aW5ndG9uLmVkdT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW5hbWUgRE9NLlJHQkEgYW5k
IHJlbW92ZSB3b3JrYXJvdW5kcyBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYwMjUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDM3YmZmZjgyZDM4ZTA5MjMwYzgyMDBhZThhZGNjM2NiYTY1NDdiMTguLjlmMzRiMjhiMTk1
NjcyMzIxNzc2M2NiMDU5MzZlNDA5Y2Q1ODVjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNjkg
QEAKIDIwMTQtMDgtMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1Pgog
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyIHRv
IEluc3BlY3Rvcjo6UHJvdG9jb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KKworICAgICAgICBSZW5hbWUgVHlwZUJ1aWxkZXIgbmFtZXNwYWNlIHRvIFByb3RvY29sLiBE
aXNhbWJpZ3VhdGUgd2hlcmUKKyAgICAgICAgbmVjZXNzYXJ5LiBBbHNvIHJlbmFtZSBJbnNwZWN0
b3JUeXBlQnVpbGRlciB0byBQcm90b2NvbFR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIFdlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdEltcGwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRo
TWFuaWZlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6Z2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6
YnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGlu
ZVN0eWxlc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dENvbXB1dGVkU3R5bGVGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50OjpnZXRBbGxTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpz
ZXRQcm9wZXJ0eVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnRv
Z2dsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRS
dWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENT
U1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5h
bWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmFzSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6Y29sbGVjdFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50Ojp2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJl
Z2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvckFsbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0
ZW5lcnNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpnZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmdldERhdGFiYXNlVGFibGVOYW1lcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6bGF5ZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5n
UmVuZGVyTGF5ZXJIaWVyYXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbik6CisgICAgICAgIChX
ZWJDb3JlOjpidWlsZE9iamVjdEZvckNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEFy
cmF5Rm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Omdl
dENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNv
dXJjZVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJ
blJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZv
ckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JGcmFtZVRyZWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpidWlsZEluc3BlY3Rvck9iamVjdEZvcklucHV0KToKKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZEluc3BlY3Rvck9iamVjdEZvclNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemVJbnB1dFRvSlNPTkZ1bmN0b3I6OlNlcmlhbGl6ZUlucHV0VG9KU09ORnVuY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVJbnB1dFRvSlNPTkZ1bmN0b3I6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZWdtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojpzd2l0Y2hTZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjppbnNlcnRTZXNzaW9uU2VnbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6cmVtb3ZlU2Vzc2lv
blNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmN1cnJl
bnRSZXBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6
Z2V0QXZhaWxhYmxlU2Vzc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OmdldFNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxh
eUFnZW50OjpnZXRTZWdtZW50RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJl
cGxheUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JUaW1pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0
b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2ls
bFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2Vi
U29ja2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkU2VuZFdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU291cmNlUmFuZ2VPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRNZWRpYU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVkaWFM
aXN0Q2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0
Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlG
b3JDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHls
ZVdpdGhQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpJbnNwZWN0
b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldDo6YnVpbGRPYmplY3RGb3JTZWxlY3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0OjpjYW5CaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Byb3RvY29sKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2VuZEV2ZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisKKzIwMTQtMDgtMjQgIEJyaWFu
IEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlbmFtZSBET00uUkdCQSBhbmQgcmVtb3ZlIHdvcmthcm91bmRzIGluIHRoZSBiaW5kaW5n
cyBnZW5lcmF0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNjAyNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDdmZjdk
YzYyNTc3ODFmYWEwM2EyMjEyMzJiYzE0ZGQ0NWUzNWY3Mi4uNTAwMjNmYmNlNmMwNTkxNWVhYjIx
MzdmZjg2M2NmMDRhZmZjZDY2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtOTM1LDggKzkzNSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTlNQRUNUT1JfUFJPVE9DT0xf
U0NSSVBUUwogICAgICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2Rl
Z2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQogICAgICR7
SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRlX2Zy
b250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9JTlNQRUNU
T1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBs
ZW1lbnRhdGlvbi5weQotICAgICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElS
fS9jb2RlZ2VuL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHkKLSAgICAke0phdmFTY3Jp
cHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxk
ZXJfaW1wbGVtZW50YXRpb24ucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJ
UFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKKyAgICAk
e0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9w
cm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQogICAgICR7SmF2YVNjcmlwdENvcmVfSU5T
UEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRvci5weQogICAgICR7SmF2YVNjcmlw
dENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkKICAgICAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vY29kZWdlbi9f
X2luaXRfXy5weQpAQCAtOTY1LDEyICs5NjUsMTIgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAg
ICAgICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9J
bnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAgICAgICAgICAgICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmREaXNw
YXRjaGVycy5jcHAKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9pbnNwZWN0b3IvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKLSAgICAgICAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuY3BwCi0gICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAg
ICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvSW5z
cGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcAorICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaAog
ICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJJTlNQRUNUT1JVSV9ESVJ9L1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFuZHMuanMKICAgICBNQUlOX0RF
UEVOREVOQ1kgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JK
Uy5qc29uCiAgICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9QUk9UT0NPTF9T
Q1JJUFRTfQotICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29y
ZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weSAtLW91dHB1dERpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fSIgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQ
VENPUkVfRElSfS9JbnNwZWN0b3JKUy5qc29uICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3BhdGNo
ZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpT
RnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgbWtkaXIgLXAg
JHtERVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9y
SlNCYWNrZW5kQ29tbWFuZHMuanMgJHtERVJJVkVEX1NPVVJDRVNfV0VCSU5TUEVDVE9SVUlfRElS
fS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sCisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5IC0tb3V0cHV0RGlyICIke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9IiAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gJiYgbWtkaXIgLXAg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNw
YXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9y
SlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNQcm90b2NvbFR5
cGVzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1By
b3RvY29sVHlwZXMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX1dFQklOU1BFQ1RPUlVJX0RJUn0v
VXNlckludGVyZmFjZS9Qcm90b2NvbCAmJiBjcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpzICR7REVSSVZFRF9TT1VSQ0VT
X1dFQklOU1BFQ1RPUlVJX0RJUn0vVXNlckludGVyZmFjZS9Qcm90b2NvbAogICAgIFZFUkJBVElN
KQogZmlsZShNQUtFX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9E
SVJ9L2luc3BlY3RvcikKIApAQCAtOTg2LDE0ICs5ODYsMTQgQEAgYWRkX2N1c3RvbV9jb21tYW5k
KAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTQmFja2VuZERpc3Bh
dGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAKLSAgICAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAogbGlzdChBUFBFTkQgSmF2
YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmgKICAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU0Zy
b250ZW5kRGlzcGF0Y2hlcnMuaAotICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29s
VHlwZXMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGQzM2M5NTE4ZmMyOTI4MWM0NGIwNzI4ZWExODRhNjYxYTg0Yzk2NGQuLjVhNWRhYzM2MjI0
OTA2ZGExMTgyOGYxMTY4ZmVmOTU3ZGEwYTZhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjgsOCArMTI4LDggQEAgSU5TUEVDVE9SX0dFTkVSQVRP
Ul9TQ1JJUFRTID0gXAogCSQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IFwKIAkkKEph
dmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5k
X2Rpc3BhdGNoZXJfaGVhZGVyLnB5IFwKIAkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24u
cHkgXAotCSQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSBcCi0JJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkg
XAorCSQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
cHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5
IFwKIAkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRv
cl90ZW1wbGF0ZXMucHkgXAogCSQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdG9yLnB5IFwKIAkkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL21vZGVscy5weSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agppbmRleCA1OTNlNzk5MDYzNzYzNGU4OWY2N2FiMzNmOWVjMWMyNTc2MDY2NTg1Li43MDAwODNi
MjBjZDYxYWFiY2ZmMmQ2NTkzNTVmZjRjZjBhM2Q2YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKQEAgLTgxNyw3ICs4MTcsNyBAQCDvu788P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceWFyclxZ
YXJyU3ludGF4Q2hlY2tlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckpTUHJvdG9jb2xUeXBlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIiAvPgogICA8L0l0ZW1Hcm91cD4KICAg
PEl0ZW1Hcm91cD4KQEAgLTgzMSw3ICs4MzEsNyBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluamVjdGVkU2NyaXB0U291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXElu
c3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNHbG9iYWxPYmpl
Y3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNPTk9iamVjdC5sdXQuaCIgLz4KQEAgLTEyNDcsNyArMTI0Nyw3IEBAIO+7vzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JFbnZpcm9ubWVudC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3Rv
clR5cGVCdWlsZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvclZhbHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCIgLz4K
QEAgLTE2MjAsOCArMTYyMCw4IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxn
ZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkiIC8+CiAgICAgPE5v
bmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0ZV9mcm9udGVu
ZF9kaXNwYXRjaGVyX2hlYWRlci5weSIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0
b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkiIC8+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29k
ZWdlblxnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5IiAvPgotICAgIDxOb25lIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2lt
cGxlbWVudGF0aW9uLnB5IiAvPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3Jp
cHRzXGNvZGVnZW5cZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5IiAvPgorICAgIDxO
b25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0b3IucHkiIC8+CiAgICAgPE5vbmUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXHNjcmlwdHNcY29kZWdlblxnZW5lcmF0b3JfdGVtcGxhdGVzLnB5IiAv
PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cbW9kZWxz
LnB5IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDY0ZTU0MGY4NzY1NTZmZTQ1ZDViMzE5YTgzODUwMmE5YzdiNmIwMzYuLjI5NGY1
MWQyYzFlNjNjMzU4OTRlZGM2NGViZGFhZDhmMDUzNmIzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEzODksNyArMTM4OSw3IEBA
IO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCI+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVz
LmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFyaXR5Q2hlY2tGYWlsUmV0
dXJuVGh1bmtzLmNwcCI+CkBAIC0yMTgwLDcgKzIxODAsNyBAQCDvu788P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9y
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIj4KICAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yVmFsdWVzLmgiPgpAQCAtMjkzNCw3ICsyOTM0LDcg
QEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5k
RGlzcGF0Y2hlcnMuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5o
Ij4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNH
bG9iYWxPYmplY3QubHV0LmgiPgpAQCAtNDA5MiwxMCArNDA5MiwxMCBAQCDvu788P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1l
bnRhdGlvbi5weSI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW48L0Zp
bHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNjcmlw
dHNcY29kZWdlblxnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5Ij4KKyAgICA8Tm9uZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3Jcc2NyaXB0c1xjb2RlZ2VuXGdlbmVyYXRlX3Byb3RvY29sX3R5
cGVzX2hlYWRlci5weSI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW48
L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXHNj
cmlwdHNcY29kZWdlblxnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkiPgor
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdGVf
cHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0
b3Jcc2NyaXB0c1xjb2RlZ2VuPC9GaWx0ZXI+CiAgICAgPC9Ob25lPgogICAgIDxOb25lIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxzY3JpcHRzXGNvZGVnZW5cZ2VuZXJhdG9yLnB5Ij4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmls
ZXMuY21kIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29w
eS1maWxlcy5jbWQKaW5kZXggZWI4NGJjMThmZjQzZDJjNzhiNTIyMmFlZTRlYmVkYTVmYjBhN2Ew
ZS4uOWE0ZGFmMmJjYWU0YjE0MTk5NTU4Y2RjNTQ1ZDRjZGEzYWZkZTdjNSAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5j
bWQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29w
eS1maWxlcy5jbWQKQEAgLTcxLDcgKzcxLDcgQEAgZm9yICUlZCBpbiAoCiANCiBlY2hvIENvcHlp
bmcgSW5zcGVjdG9yIGdlbmVyYXRlZCBmaWxlcyBhcyBpZiB0aGV5IHdlcmUgcHJpdmF0ZSBoZWFk
ZXJzLi4uDQogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5zcGVjdG9ySlMu
anNvbiIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwNCi14Y29weSAveSAiJURlcml2
ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIiAiJVByaXZhdGVI
ZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KK3hjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3Rv
cnklXEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5
JSIgPk5VTA0KIHhjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3RvckpT
QmFja2VuZERpc3BhdGNoZXJzLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQog
eGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQogeGNvcHkgL3kg
IiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFuZHMuanMi
ICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhYWJmMWFlZjdiZWM3NDE1MTliZWJjZDJmZDczNzFiNmFiYzE5ODE5Li42MGU2
OTIyMzBjODE5MTRlNmJhMmQ2OGUxOWI2NGE1Y2VkZDYyZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTM1OSw4ICsxMzU5LDggQEAKIAkJQTUzMjQzODgxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4MjE4NTY4MzE3MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTMyNDM4OTE4NTY4MzM1MDAyRUQ2OTIgLyogSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0MzgzMTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0
b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQlBNTMyNDM4QTE4NTY4MzM1MDAy
RUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM4NDE4NTY4MzE3MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8q
IEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5jcHAgKi87IH07Ci0JCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUzMjQzODYxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMy
NDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcCAqLzsg
fTsKKwkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQz
ODYxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MzI0Mzk0MTg1Njk3
MDkwMDJFRDY5MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0MzkxMTg1Njk2RTYw
MDJFRDY5MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTMyNDM5ODE4NTZBNDg5
MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzk1MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JK
Uy5qc29uICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE1M0NFMDg1MThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1M0NFMDgxMThCQzFBNTYw
MEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTEzNzksNyArMTM3OSw3
IEBACiAJCUE1NEU4RUIxMThCRkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkEzNDNG
NzcxOEExNzQ5RDAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU1RDkzQTUxODUwMTJB
ODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2Ny
aXB0RnVuY3Rpb25DYWxsLmNwcCAqLzsgfTsKIAkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8q
IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU1RDkzQTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1
NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQUIxODUxNEY3OTAw
NDAwREVEIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIElu
c3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1NUQ5M0FCMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2Nv
bFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTU3RDIzRTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTMx
ODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9OwogCQlB
NTdEMjNFNjE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTQxODkwQ0VC
RjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTdEMjNFOTE4OTFCMDc3MDAzMUM3RkEg
LyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovOyB9OwpAQCAtMTc5MiwxMSArMTc5MiwxMyBA
QAogCQlDNDcwM0NEMDE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRj
aGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzQ3MDNDQzUxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDNDcwM0NEMTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJh
dGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDNjE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJh
dGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzQ3MDNDRDIxOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDNzE5Mjg0NENDMDAxM0ZC
RUEgLyogZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDNDcwM0NEMzE5
Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0M4MTkyODQ0Q0Mw
MDEzRkJFQSAvKiBnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUM0NzAzQ0Q0MTkyODQ0Q0MwMDEz
RkJFQSAvKiBnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDcwM0NDOTE5Mjg0NENDMDAx
M0ZCRUEgLyogZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM0NzAzQ0Q1MTkyODQ0
Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ3MDNDQ0ExOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRvcl90ZW1wbGF0ZXMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzQ3MDNDRDYxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRvci5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAzQ0NCMTky
ODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3IucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzQ3MDNDRDcxOTI4NDRDQzAwMTNGQkVBIC8qIG1vZGVs
cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0NzAz
Q0NDMTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzQ5RkU0QTkxOUFBQzgzRTAwRjQwQ0U5IC8qIGdl
bmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzQ5RkU0QTcxOUFBQzgzRTAwRjQwQ0U5IC8qIGdlbmVy
YXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSAqLzsgfTsKKwkJQzQ5RkU0QUExOUFBQzgzRTAw
RjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNDlGRTRBODE5QUFD
ODNFMDBGNDBDRTkgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkg
Ki87IH07CisJCUM0OUZFNEFCMTlBQUM4NjEwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90
eXBlc19oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNDlGRTRBNzE5QUFDODNFMDBGNDBDRTkgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNf
aGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUM0OUZFNEFDMTlBQUM4NjEwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19p
bXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM0OUZFNEE4MTlBQUM4M0UwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMTI0QThGNzBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1
MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAv
KiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3Bw
ICovOyB9OwogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkw
QjM0IC8qIFZNLmNwcCAqLzsgfTsKQEAgLTMwMTYsOCArMzAxOCw4IEBACiAJCUE1MzI0MzgyMTg1
NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTMyNDM4MzE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9u
dGVuZERpc3BhdGNoZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckpTRnJvbnRl
bmREaXNwYXRjaGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MzI0Mzg0
MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MzI0Mzg2MTg1NjgzMTcw
MDJFRDY5MiAvKiBJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTMy
NDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JK
U1Byb3RvY29sVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MzI0MzhEMTg1Njk2Q0EwMDJFRDY5
MiAvKiBwcm90b2NvbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZvbGRlcjsgcGF0aCA9IHByb3RvY29sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTMyNDM5MTE4NTY5NkU2MDAyRUQ2OTIgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVj
dG9yLWpzb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJh
dGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTMyNDM5NTE4NTZBNDc1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuanNvbjsgcGF0aCA9IEluc3BlY3RvckpTLmpzb247IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMDM2LDcgKzMwMzgsNyBAQAogCQlBNTRDRjJGODE4NEVBRURBMDAyMzdG
MTkgLyogU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTVEOTNBMzE4NTAx
MkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5jdGlv
bkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rpb25D
YWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NUQ5M0FCMTg1MTRGNzkwMDQw
MERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JQcm90b2NvbFR5cGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0QyM0UzMTg5MENFQkYwMDMxQzdG
QSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTdEMjNFNDE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0QyM0U3MTg5MUIw
NzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0NDEsMTEgKzM0NDMsMTEgQEAKIAkJ
QzQ3MDNDQzUxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9p
bXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdl
bmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzQ3MDNDQzYxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRlX2Zy
b250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBwYXRoID0gZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0NzAzQ0M3MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0
ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1l
bnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzQ3MDNDQzgxOTI4NDRD
QzAwMTNGQkVBIC8qIGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDNDcwM0NDOTE5Mjg0NENDMDAxM0ZCRUEg
LyogZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0
aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNDcwM0NDQTE5Mjg0NENDMDAx
M0ZCRUEgLyogZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGdlbmVyYXRvcl90ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM0NzAzQ0NCMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3IucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0b3IucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM0NzAzQ0NDMTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBtb2RlbHMucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0OUZFNEE3MTlBQUM4M0UwMEY0MENFOSAvKiBnZW5lcmF0
ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247
IHBhdGggPSBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUM0OUZFNEE4MTlBQUM4M0UwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhv
bjsgcGF0aCA9IGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERh
dGVDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkw
QUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVlSlNTdHJpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMzAsOCArNDIzMiw4IEBACiAJCQkJQTUzMjQzODIxODU2ODMx
NzAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCiAJCQkJQTUz
MjQzODMxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgKi8sCiAJCQkJQTUzMjQzODQxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRl
bmREaXNwYXRjaGVycy5oICovLAotCQkJCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgKi8sCi0JCQkJQTUzMjQzODYxODU2ODMxNzAwMkVENjky
IC8qIEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggKi8sCisJCQkJQTUzMjQzODUxODU2ODMxNzAw
MkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5jcHAgKi8sCisJCQkJQTUzMjQzODYx
ODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oICovLAogCQkJCUE3
RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdEODAx
QTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgxMDcx
MkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCkBAIC01MzUyLDcgKzUzNTQsNyBA
QAogCQkJCUE1OTNDRjdCMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oICovLAogCQkJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0b3JFbnZp
cm9ubWVudC5oICovLAogCQkJCUE1OTQ1NTk0MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaCAqLywKLQkJCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuaCAqLywKKwkJCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyog
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oICovLAogCQkJCUE1OTNDRjgwMTg0MDM3NzEwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovLAogCQkJCUE1OTNDRjgxMTg0MDM3NzEwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLywKIAkJCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCkBAIC01NDI1LDggKzU0MjcsOCBAQAogCQkJ
CUM0NzAzQ0M1MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkgKi8sCiAJCQkJQzQ3MDNDQzYxOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5ICovLAogCQkJCUM0NzAzQ0M3MTky
ODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5ICovLAotCQkJCUM0NzAzQ0M4MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV90eXBl
X2J1aWxkZXJfaGVhZGVyLnB5ICovLAotCQkJCUM0NzAzQ0M5MTkyODQ0Q0MwMDEzRkJFQSAvKiBn
ZW5lcmF0ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJQzQ5RkU0QTcx
OUFBQzgzRTAwRjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSAqLywK
KwkJCQlDNDlGRTRBODE5QUFDODNFMDBGNDBDRTkgLyogZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNf
aW1wbGVtZW50YXRpb24ucHkgKi8sCiAJCQkJQzQ3MDNDQ0ExOTI4NDRDQzAwMTNGQkVBIC8qIGdl
bmVyYXRvcl90ZW1wbGF0ZXMucHkgKi8sCiAJCQkJQzQ3MDNDQ0IxOTI4NDRDQzAwMTNGQkVBIC8q
IGdlbmVyYXRvci5weSAqLywKIAkJCQlDNDcwM0NDQzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxz
LnB5ICovLApAQCAtNTcxNSw2ICs1NzE3LDggQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVE
OTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEy
NkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0Iy
QzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QzQ5RkU0QUIxOUFBQzg2MTAwRjQwQ0U5IC8qIGdlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRl
ci5weSBpbiBIZWFkZXJzICovLAorCQkJCUM0OUZFNEFDMTlBQUM4NjEwMEY0MENFOSAvKiBnZW5l
cmF0ZV9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJ
CTY1OEQzQTU2MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVudHJ5UmVjb3JkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQUQyRURGQjE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTcyNSw3ICs1NzI5LDYgQEAKIAkJ
CQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1MzI0Mzk0MTg1Njk3MDkwMDJFRDY5MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNw
ZWN0b3ItanNvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI3MTg3Qzk4MUUwMDg0M0Ix
MCAvKiBjc3NtaW4ucHkgaW4gSGVhZGVycyAqLywKLQkJCQlDNDcwM0NEMzE5Mjg0NENDMDAxM0ZC
RUEgLyogZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJ
CUM0NzAzQ0QyMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDExOTI4NDRDQzAw
MTNGQkVBIC8qIGdlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8sCiAJCQkJQzQ3MDNDRDUxOTI4NDRDQzAwMTNGQkVBIC8qIGdlbmVyYXRvcl90ZW1wbGF0
ZXMucHkgaW4gSGVhZGVycyAqLywKQEAgLTU3MzQsNyArNTczNyw2IEBACiAJCQkJQzQ3MDNDQzAx
OTI4NDQ5NjAwMTNGQkVBIC8qIGdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eSBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0QwMTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0
ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKIAkJ
CQlDNDcwM0NDRTE5Mjg0NENDMDAxM0ZCRUEgLyogZ2VuZXJhdGVfYmFja2VuZF9jb21tYW5kcy5w
eSBpbiBIZWFkZXJzICovLAotCQkJCUM0NzAzQ0Q0MTkyODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0
ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKIAkJCQlDNDcw
M0NENzE5Mjg0NENDMDAxM0ZCRUEgLyogbW9kZWxzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFB
Q0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkE4MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLApAQCAtNjExNywxMCArNjExOSwxMCBAQAogCQkJCUE1MzI0Mzg4
MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTUzMjQzOEExODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJv
bnRlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwNkRERUExOERBNDRBQjAw
QTM4M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTMyNDM4
QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU1Byb3RvY29s
VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkZERDA1MTk2Qzky
QkYwMDdBNUJGQSAvKiBERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90
b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcg
LyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FF
MDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdB
REI1RjMwMDVBQjE3NCAvKiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTY3NjcsNyAr
Njc2OSw5IEBACiAJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUM0OUZFNEE5MTlBQUM4M0Uw
MEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCUE1M0YxQUMwMThDOTBGOEYwMDcyRUI2RCAvKiBmcmFtZXdvcmsuc2IgaW4gUmVz
b3VyY2VzICovLAorCQkJCUM0OUZFNEFBMTlBQUM4M0UwMEY0MENFOSAvKiBnZW5lcmF0ZV9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC03Mzg2LDcg
KzczOTAsNyBAQAogCQkJCUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg3MTg1NjgzMzUwMDJFRDY5
MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTMyNDM4OTE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNo
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTMyNDM4QjE4
NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIElu
c3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzg4NTNGOTE3OTcyNjI5MDAx
NDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5k
ZXggMDIwM2JjMWE5ZjczNmI0OGZjMjFlYzExYzhlM2I0OTUwOWQxMDk1OS4uNGI4ZTNjNTY5ZjMy
NmMyYTg3YTU4MWEwOWZjM2U2MWM3Mzk4MTFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTEzMSw1NyArMTMxLDU3IEBA
IHZvaWQgQ29uc29sZU1lc3NhZ2U6OmF1dG9nZW5lcmF0ZU1ldGFkYXRhKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSkKICAgICB9CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlIG1lc3NhZ2VTb3VyY2VWYWx1ZShNZXNzYWdlU291
cmNlIHNvdXJjZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xl
TWVzc2FnZTo6U291cmNlIG1lc3NhZ2VTb3VyY2VWYWx1ZShNZXNzYWdlU291cmNlIHNvdXJjZSkK
IHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6WE1MOiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6WE1MOwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6IHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpKYXZhc2NyaXB0
OwotICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TmV0d29yazogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok5ldHdvcms7Ci0gICAg
Y2FzZSBNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q29uc29sZUFQSTsKLSAgICBj
YXNlIE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2U6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpTdG9yYWdlOwotICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6QXBwQ2FjaGU6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpBcHBjYWNoZTsKLSAgICBjYXNlIE1lc3NhZ2VT
b3VyY2U6OlJlbmRlcmluZzogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6
OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlJlbmRlcmluZzsKLSAgICBjYXNlIE1lc3NhZ2VTb3Vy
Y2U6OkNTUzogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpTb3VyY2U6OkNTUzsKLSAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5OiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6U2VjdXJpdHk7Ci0gICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjogcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90
aGVyOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6WE1MOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6WE1MOworICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6SlM6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25z
b2xlTWVzc2FnZTo6U291cmNlOjpKYXZhc2NyaXB0OworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6
TmV0d29yazogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpTb3VyY2U6Ok5ldHdvcms7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
OiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6Q29uc29sZUFQSTsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2U6IHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpT
dG9yYWdlOworICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGU6IHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpBcHBjYWNoZTsK
KyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OlJlbmRlcmluZzsKKyAgICBj
YXNlIE1lc3NhZ2VTb3VyY2U6OkNTUzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNv
bGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6OkNTUzsKKyAgICBjYXNlIE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5OiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlNvdXJjZTo6U2VjdXJpdHk7CisgICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjog
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3Vy
Y2U6Ok90aGVyOwogICAgIH0KLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CisgICAgcmV0dXJuIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpTb3VyY2U6Ok90aGVyOwogfQog
Ci1zdGF0aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGUgbWVzc2FnZVR5cGVWYWx1ZShNZXNzYWdlVHlwZSB0eXBlKQorc3RhdGljIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlIG1lc3NhZ2VUeXBlVmFs
dWUoTWVzc2FnZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpMb2c6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
b25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOiBy
ZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5
cGU6OkNsZWFyOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpcjogcmV0dXJuIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpEaXI7Ci0gICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6RGlyWE1MOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkRpclhNTDsKLSAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpUYWJsZTogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpUeXBlOjpUYWJsZTsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpUcmFjZTogcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpU
cmFjZTsKLSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwOiByZXR1cm4gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlN0YXJ0R3JvdXA7
Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6U3RhcnRHcm91cENvbGxhcHNlZDogcmV0dXJuIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpTdGFydEdy
b3VwQ29sbGFwc2VkOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVuZEdyb3VwOiByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkVuZEdy
b3VwOwotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkFzc2VydDogcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpBc3NlcnQ7Ci0gICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6VGltaW5nOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRpbWluZzsKLSAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpQcm9maWxlOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29s
ZU1lc3NhZ2U6OlR5cGU6OlByb2ZpbGU7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6UHJvZmlsZUVu
ZDogcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdl
OjpUeXBlOjpQcm9maWxlRW5kOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkxvZzogcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpUeXBlOjpMb2c7Cisg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6Q2xlYXI6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6Q2xlYXI7CisgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6RGlyOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlR5cGU6OkRpcjsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEaXJYTUw6IHJldHVybiBJbnNw
ZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyWE1MOwor
ICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRhYmxlOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRhYmxlOworICAgIGNhc2UgTWVzc2FnZVR5
cGU6OlRyYWNlOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OlR5cGU6OlRyYWNlOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXA6IHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
U3RhcnRHcm91cDsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOiBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OlN0YXJ0R3JvdXBDb2xsYXBzZWQ7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RW5kR3JvdXA6IHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6
RW5kR3JvdXA7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6QXNzZXJ0OiByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OkFzc2VydDsKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpUaW1pbmc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6VGltaW5nOworICAgIGNhc2UgTWVzc2FnZVR5cGU6
OlByb2ZpbGU6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6VHlwZTo6UHJvZmlsZTsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kOiBy
ZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6
OlByb2ZpbGVFbmQ7CiAgICAgfQotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOworICAgIHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6TG9nOwogfQogCi1zdGF0
aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVs
IG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKK3N0YXRpYyBJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWwgbWVzc2FnZUxldmVsVmFs
dWUoTWVzc2FnZUxldmVsIGxldmVsKQogewogICAgIHN3aXRjaCAobGV2ZWwpIHsKLSAgICBjYXNl
IE1lc3NhZ2VMZXZlbDo6TG9nOiByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmc6IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6TGV2ZWw6Oldhcm5pbmc7Ci0gICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkVycm9yOiByZXR1
cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVs
OjpFcnJvcjsKLSAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6RGVidWc6IHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkRlYnVnOworICAg
IGNhc2UgTWVzc2FnZUxldmVsOjpMb2c6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6
V2FybmluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpMZXZlbDo6V2FybmluZzsKKyAgICBjYXNlIE1lc3NhZ2VMZXZlbDo6RXJyb3I6IHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkVy
cm9yOworICAgIGNhc2UgTWVzc2FnZUxldmVsOjpEZWJ1ZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7CiAgICAgfQotICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6
TGV2ZWw6OkxvZzsKKyAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRv
RnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBq
c29uT2JqID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRTb3VyY2UobWVzc2FnZVNvdXJjZVZhbHVlKG1fc291cmNlKSkK
ICAgICAgICAgLnNldExldmVsKG1lc3NhZ2VMZXZlbFZhbHVlKG1fbGV2ZWwpKQogICAgICAgICAu
c2V0VGV4dChtX21lc3NhZ2UpOwpAQCAtMTk5LDExICsxOTksMTEgQEAgdm9pZCBDb25zb2xlTWVz
c2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBj
b25zb2xlRnIKICAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMtPmdsb2JhbFN0YXRl
KCkpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IGpzb25BcmdzID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4ganNv
bkFyZ3MgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChtX3R5cGUg
PT0gTWVzc2FnZVR5cGU6OlRhYmxlICYmIGdlbmVyYXRlUHJldmlldyAmJiBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUgdGFibGUgPSBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgwKTsKICAgICAgICAgICAgICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBjb2x1bW5zID0gbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKSA+IDEgPyBtX2FyZ3VtZW50cy0+YXJndW1lbnRBdCgxKSA6IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53
cmFwVGFibGUodGFibGUsIGNvbHVtbnMpOworICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5q
ZWN0ZWRTY3JpcHQud3JhcFRhYmxlKHRhYmxlLCBjb2x1bW5zKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTEsNyArMjExLDcgQEAg
dm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRl
bmREaXNwYXRjaGVyKiBjb25zb2xlRnIKICAgICAgICAgICAgICAgICBqc29uQXJncy0+YWRkSXRl
bShpbnNwZWN0b3JWYWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSIsIGdlbmVyYXRl
UHJldmlldyk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQu
d3JhcE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSwgImNvbnNvbGUiLCBnZW5lcmF0
ZVByZXZpZXcpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCmluZGV4IGJjZDY5MWJiMWUz
NmJiZjYyZTI2MWMxOTljYjg4NGE5M2NmNTM0NmUuLmVmNTRmMDZjMzFjYTYwMWFiNWNjMzRjZDYx
MWRiZTY4Nzk5NDM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcApAQCAtMzEsNyArMzEsNyBAQAog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNs
dWRlICJZYXJyLmgiCkBAIC0xMjEsOSArMTIxLDkgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxz
aXplX3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJp
Y1R5cGVzOjpTZWFyY2hNYXRjaD4gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChzaXplX3QgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBsaW5lQ29udGVudCkKK3N0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0
Rm9yU2VhcmNoTWF0Y2goc2l6ZV90IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRl
bnQpCiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6
U2VhcmNoTWF0Y2g6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Okdl
bmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVy
KGxpbmVOdW1iZXIpCiAgICAgICAgIC5zZXRMaW5lQ29udGVudChsaW5lQ29udGVudCkKICAgICAg
ICAgLnJlbGVhc2UoKTsKQEAgLTE1NCw5ICsxNTQsOSBAQCBpbnQgY291bnRSZWd1bGFyRXhwcmVz
c2lvbk1hdGNoZXMoY29uc3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNv
bgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2Vu
ZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHJlc3VsdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+OjpjcmVh
dGUoKTsKIAogICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXggPSBDb250ZW50
U2VhcmNoVXRpbGl0aWVzOjpjcmVhdGVTZWFyY2hSZWdleChxdWVyeSwgY2FzZVNlbnNpdGl2ZSwg
aXNSZWdleCk7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIFN0cmluZz4+IG1hdGNoZXMg
PSBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxp
dGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmgKaW5kZXggMmJjMmQzYzdjMGRkMmRlMmYxYzIyYTNjMmRiNmZhMTFhNmIzMjJmMC4u
ZDYxMmRhYjFmMmE4NzA5MDk1NWNiOTE4ZGYyYmQ1MDllNTZmY2QzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVz
LmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRl
ICJJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTUHJvdG9j
b2xUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0UG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcg
KzQ2LDcgQEAgbmFtZXNwYWNlIENvbnRlbnRTZWFyY2hVdGlsaXRpZXMgewogCiBKU19FWFBPUlRf
UFJJVkFURSBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KGNv
bnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1JlZ2V4KTsKIEpT
X0VYUE9SVF9QUklWQVRFIGludCBjb3VudFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlcyhjb25zdCBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgY29uc3QgU3RyaW5nJik7Ci1KU19FWFBPUlRf
UFJJVkFURSBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiBzZWFyY2hJblRleHRC
eUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9v
bCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOworSlNfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KTsKIEpTX0VYUE9SVF9QUklWQVRFIFRleHRQb3NpdGlvbiB0
ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVfdCBvZmZzZXQsIGNvbnN0IFZlY3RvcjxzaXplX3Q+
JiBsaW5lRW5kaW5ncyk7CiBKU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IGU1YTI2MjJk
ZGViMTQ1MmZlOTJiY2E0NmE4MDQ1OWI5OWJhZDQwOGEuLjI1MTg3ZmI0YWJlOTQwZTA0MWU3MmI4
ZWYyYTgxM2U4YjY3ZDlhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC01OCw3ICs1OCw3IEBAIEluamVj
dGVkU2NyaXB0Ojp+SW5qZWN0ZWRTY3JpcHQoKQogewogfQogCi12b2lkIEluamVjdGVkU2NyaXB0
OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQordm9pZCBJbmpl
Y3RlZFNjcmlwdDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgQVNDSUlMaXRlcmFsKCJldmFsdWF0ZSIpLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgp
LT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4
cHJlc3Npb24pOwpAQCAtNjksNyArNjksNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbgogICAg
IG1ha2VFdmFsQ2FsbChlcnJvclN0cmluZywgZnVuY3Rpb24sIHJlc3VsdCwgd2FzVGhyb3duKTsK
IH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9v
bD4qIHdhc1Rocm93bikKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVl
LCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksIEFTQ0lJTGl0ZXJhbCgiY2FsbEZ1bmN0
aW9uT24iKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBvYmplCiAgICAgbWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBm
dW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0Ojpl
dmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9v
bCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+KiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKQordm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxs
RnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
LCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVND
SUlMaXRlcmFsKCJldmFsdWF0ZU9uQ2FsbEZyYW1lIiksIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2Fs
bEZyYW1lcyk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRl
T25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBEZXByZWNhCiAgICAg
bWFrZUV2YWxDYWxsKGVycm9yU3RyaW5nLCBmdW5jdGlvbiwgcmVzdWx0LCB3YXNUaHJvd24pOwog
fQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KQordm9pZCBJ
bmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCkKIHsKICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlM
aXRlcmFsKCJnZXRGdW5jdGlvbkRldGFpbHMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlv
bklkKTsKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgICpyZXN1bHQgPSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+OjpydW50aW1lQ2FzdChy
ZXN1bHRWYWx1ZSk7CisgICAgKnJlc3VsdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46OnJ1bnRpbWVDYXN0KHJlc3VsdFZhbHVl
KTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywg
UmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVz
Y3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGll
cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wg
b3duUHJvcGVydGllcywgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQogewogICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxp
dGVyYWwoImdldFByb3BlcnRpZXMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CkBA
IC0xMjIsMTAgKzEyMiwxMCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplYwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgKnByb3BlcnRpZXMgPSBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+OjpydW50aW1l
Q2FzdChyZXN1bHQpOworICAgICpwcm9wZXJ0aWVzID0gQmluZGluZ1RyYWl0czxBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNh
c3QocmVzdWx0KTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVm
UHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVy
dHlEZXNjcmlwdG9yPj4qIHByb3BlcnRpZXMpCit2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRJbnRl
cm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJu
YWxQcm9wZXJ0eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKIHsKICAgICBEZXByZWNhdGVkOjpT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlM
aXRlcmFsKCJnZXRJbnRlcm5hbFByb3BlcnRpZXMiKSwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+
ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmpl
Y3RJZCk7CkBAIC0xMzcsMTIgKzEzNywxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRJbnRl
cm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhcnJheSA9IEJpbmRpbmdUcmFpdHM8QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3I+Pjo6cnVudGltZUNhc3QocmVzdWx0KTsKKyAgICBhdXRvIGFycmF5ID0gQmluZGluZ1Ry
YWl0czxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChyZXN1bHQpOwogICAgIGlmIChhcnJheS0+bGVuZ3Ro
KCkgPiAwKQogICAgICAgICAqcHJvcGVydGllcyA9IGFycmF5OwogfQogCi1QYXNzUmVmUHRyPEFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3Rl
ZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNh
bGxGcmFtZXMpCitQYXNzUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVl
KCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCBBU0NJSUxpdGVyYWwoIndyYXBDYWxsRnJhbWVzIiksIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0xNTMsMTIgKzE1Mywx
MiBAQCBQYXNzUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6dwogICAgIEFTU0VSVCghaGFkRXhjZXB0aW9uKTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNWYWx1ZS50b0lu
c3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChyZXN1bHQtPnR5cGUoKSA9PSBJ
bnNwZWN0b3JWYWx1ZTo6VHlwZTo6QXJyYXkpCi0gICAgICAgIHJldHVybiBCaW5kaW5nVHJhaXRz
PEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+Pjo6cnVu
dGltZUNhc3QocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+OjpydW50aW1lQ2FzdChyZXN1
bHQpOwogCi0gICAgcmV0dXJuIEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogfQogCi1QYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBPYmplY3QoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRT
Y3JpcHQ6OndyYXBPYmplY3QoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlLCBj
b25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgQVNDSUlMaXRlcmFsKCJ3
cmFwT2JqZWN0IiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CkBAIC0xNzMsMTAgKzE3MywxMCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJhd1Jlc3Vs
dCA9IHIudG9JbnNwZWN0b3JWYWx1ZShzY3JpcHRTdGF0ZSgpKS0+YXNPYmplY3QoKTsKLSAgICBy
ZXR1cm4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOworICAgIHJldHVybiBCaW5kaW5nVHJh
aXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRpbWVD
YXN0KHJhd1Jlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIGNvbHVtbnMpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBUYWJsZShjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBj
b2x1bW5zKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKICAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksIEFTQ0lJTGl0ZXJhbCgid3JhcFRhYmxlIiksIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CkBAIC0xOTMsNyArMTkzLDcgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0
Ojp3cmFwVGEKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiByYXdSZXN1bHQgPSByLnRvSW5zcGVjdG9yVmFsdWUoc2NyaXB0U3RhdGUoKSktPmFz
T2JqZWN0KCk7Ci0gICAgcmV0dXJuIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QocmF3UmVzdWx0KTsKKyAgICBy
ZXR1cm4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+OjpydW50aW1lQ2FzdChyYXdSZXN1bHQpOwogfQogCiBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuaAppbmRleCA0YzU4YjE5ZTUxZjdmNzEwOWJkZjJhZDc0MDBiMGY5ZjdiMjdhYjZlLi42
ZThmNzY5ZTAxNjNhMzI2Y2Y2MjIyYjQwZTEwMzZkMGU0MzY5YjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC0zNSw3ICszNSw3
IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0QmFz
ZS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9ySlNQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NTYsMTYgKzU2LDE2IEBAIHB1YmxpYzoKICAgICBJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QsIEluc3BlY3RvckVudmlyb25tZW50Kik7CiAgICAgdmlydHVhbCB+SW5qZWN0
ZWRTY3JpcHQoKTsKIAotICAgIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgVHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKLSAgICB2b2lkIGNhbGxGdW5jdGlv
bk9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBi
b29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7
Ci0gICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQs
IGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCwgYm9v
bCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0
ZVByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVz
dWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwotICAgIHZvaWQg
Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQp
OwotICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7Ci0gICAgdm9p
ZCBnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOworICAgIHZvaWQgZXZhbHVhdGUoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0
R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJv
b2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4qIHJlc3VsdCwgUHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICB2
b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwg
Y29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCBy
ZXR1cm5CeVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50
aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdh
c1Rocm93bik7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyYgY2Fs
bEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RH
cm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9v
bCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiogcmVzdWx0LCBQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOworICAgIHZv
aWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
bklkLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQp
OworICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2Nv
bDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4qIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJ
bnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBS
ZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5
RGVzY3JpcHRvcj4+KiByZXN1bHQpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiB3cmFwQ2FsbEZyYW1lcyhjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE9iamVjdChjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9
IGZhbHNlKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IHdyYXBUYWJsZShjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdGFibGUs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjb2x1bW5zKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdy
YXBDYWxsRnJhbWVzKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CisgICAgUGFzc1Jl
ZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwT2JqZWN0KGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2Vu
ZXJhdGVQcmV2aWV3ID0gZmFsc2UpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcFRhYmxlKGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiB0YWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNvbHVtbnMpIGNvbnN0
OwogCiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZmluZE9iamVjdEJ5SWQoY29uc3QgU3Ry
aW5nJiBvYmplY3RJZCkgY29uc3Q7CiAgICAgdm9pZCBpbnNwZWN0T2JqZWN0KERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAppbmRleCBmZTEwZDZjNGJmYmFmYmYyODZjYzNhOGQz
NWM5YzU4ZGQ1NDI0YzFiLi44NTY5YTRiNzgxMjc2NjYyZmEwZDBjZWQ5MWRlZTFkMjg1N2EwZmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0QmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEJhc2UuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJh
c2U6Om1ha2VDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJl
ZlAKICAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24g
d2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1h
a2VFdmFsQ2FsbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Piogb2JqZWN0UmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pCit2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUV2YWxDYWxsKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwg
UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiBvYmplY3RSZXN1bHQsIFBy
b3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKIHsKICAgICBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IHJlc3VsdDsKICAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJlc3VsdCk7CkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VFdmFsQ2FsbChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIERlcHJlY2F0ZWQ6OlNjcmkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgICpvYmplY3RSZXN1bHQgPSBCaW5kaW5nVHJhaXRzPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+OjpydW50aW1lQ2FzdChyZXN1bHRPYmopOworICAgICpvYmpl
Y3RSZXN1bHQgPSBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
OjpydW50aW1lQ2FzdChyZXN1bHRPYmopOwogICAgICp3YXNUaHJvd24gPSB3YXNUaHJvd25WYWw7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5oCmluZGV4IDAzNGUwYzIwYTRmOGVjNGE3YjE0MjY5NjdjODg5MDM1MTFkNWRi
N2IuLjUwZmE1OGRkMDc5ODdhY2QyMGFlZmVlN2Q3NzVhNDk1MWEwY2Y2MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuaApA
QCAtMzUsNyArMzUsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAiYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC02OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRPYmplY3QmIGluamVjdGVkU2NyaXB0T2JqZWN0KCkgY29uc3Q7CiAgICAg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgY2FsbEZ1bmN0aW9uV2l0aEV2YWxFbmFibGVkKERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYsIGJvb2wmIGhhZEV4Y2VwdGlvbikgY29uc3Q7CiAg
ICAgdm9pZCBtYWtlQ2FsbChEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+KiByZXN1bHQpOwotICAgIHZvaWQgbWFrZUV2YWxDYWxsKEVycm9yU3Ry
aW5nKiwgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bik7CisgICAgdm9pZCBtYWtlRXZhbENhbGwoRXJyb3JTdHJpbmcqLCBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4qIHJlc3VsdCwgUHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhy
b3duKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZTkyY2U2ZDlmYWNkODRlOWExOGRiZjY1ZjQwNjYwNzBkM2Q5MDY3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90
b2NvbFR5cGVzLmgKQEAgLTAsMCArMSwyNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvclByb3RvY29sVHlw
ZXNfaAorI2RlZmluZSBJbnNwZWN0b3JQcm90b2NvbFR5cGVzX2gKKworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworCituYW1lc3BhY2UgUHJvdG9jb2wgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
Y2xhc3MgT3B0T3V0cHV0IHsKK3B1YmxpYzoKKyAgICBPcHRPdXRwdXQoKSA6IG1fYXNzaWduZWQo
ZmFsc2UpIHsgfQorCisgICAgdm9pZCBvcGVyYXRvcj0oVCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgbV9hc3NpZ25lZCA9IHRydWU7CisgICAgfQorCisg
ICAgYm9vbCBpc0Fzc2lnbmVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3NpZ25lZDsgfQorCisgICAg
VCBnZXRWYWx1ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNBc3NpZ25lZCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFQgbV92YWx1ZTsKKyAg
ICBib29sIG1fYXNzaWduZWQ7CisKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShPcHRPdXRwdXQp
OworfTsKKworLy8gVGhpcyBjbGFzcyBwcm92aWRlcyAiVHJhaXRzIiB0eXBlIGZvciB0aGUgaW5w
dXQgdHlwZSBULiBJdCBpcyBwcm9ncmFtbWVkIHVzaW5nIEMrKyB0ZW1wbGF0ZSBzcGVjaWFsaXph
dGlvbgorLy8gdGVjaG5pcXVlLiBCeSBkZWZhdWx0IGl0IHNpbXBseSB0YWtlcyAiSXRlbVRyYWl0
cyIgdHlwZSBmcm9tIFQsIGJ1dCBpdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgYmFzZSB0eXBlcy4K
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyIHsKKyAgICB0eXBl
ZGVmIHR5cGVuYW1lIFQ6Okl0ZW1UcmFpdHMgVHJhaXRzOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK2NsYXNzIEFycmF5IDogcHVibGljIEluc3BlY3RvckFycmF5QmFzZSB7Citwcml2YXRl
OgorICAgIEFycmF5KCkgeyB9CisKKyAgICBJbnNwZWN0b3JBcnJheSogb3BlbkFjY2Vzc29ycygp
CisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yQXJyYXkpID09
IHNpemVvZihBcnJheTxUPiksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEluc3BlY3RvckFycmF5Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNlKj4odGhp
cykpOworICAgIH0KKworcHVibGljOgorICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFQ+IHZh
bHVlKQorICAgIHsKKyAgICAgICAgQXJyYXlJdGVtSGVscGVyPFQ+OjpUcmFpdHM6OnB1c2hSZWZQ
dHIodGhpcy0+b3BlbkFjY2Vzc29ycygpLCB2YWx1ZSk7CisgICAgfQorCisgICAgdm9pZCBhZGRJ
dGVtKFQgdmFsdWUpCisgICAgeworICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRyYWl0czo6
cHVzaFJhdyh0aGlzLT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBcnJheTxUPj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQXJyYXk8VD4oKSk7CisgICAgfQorfTsKKworc3RydWN0IFN0cnVjdEl0ZW1U
cmFpdHMgeworICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5
LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGFycmF5
LT5wdXNoVmFsdWUodmFsdWUpOworICAgIH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJh
eUl0ZW1IZWxwZXI8U3RyaW5nPiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRp
YyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KQorICAgICAgICB7CisgICAgICAgICAgICBhcnJheS0+cHVzaFN0cmluZyh2YWx1ZSk7CisgICAg
ICAgIH0KKyAgICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxp
bnQ+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJ
bnNwZWN0b3JBcnJheSogYXJyYXksIGludCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
YXJyYXktPnB1c2hJbnQodmFsdWUpOworICAgICAgICB9CisgICAgfTsKK307CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8ZG91YmxlPiB7CisgICAgc3RydWN0IFRyYWl0cyB7
CisgICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSYXcoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBkb3Vi
bGUgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoTnVtYmVyKHZhbHVl
KTsKKyAgICAgICAgfQorICAgIH07Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQXJyYXlJdGVt
SGVscGVyPGJvb2w+IHsKKyAgICBzdHJ1Y3QgVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIHZvaWQg
cHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGJvb2wgdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGFycmF5LT5wdXNoQm9vbGVhbih2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9Owor
fTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhlbHBlcjxJbnNwZWN0b3JWYWx1ZT4g
eworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKElu
c3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUpOworICAgICAgICB9
CisgICAgfTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBBcnJheUl0ZW1IZWxwZXI8SW5zcGVj
dG9yT2JqZWN0PiB7CisgICAgc3RydWN0IFRyYWl0cyB7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1
c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVl
PiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7
CisgICAgICAgIH0KKyAgICB9OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEFycmF5SXRlbUhl
bHBlcjxJbnNwZWN0b3JBcnJheT4geworICAgIHN0cnVjdCBUcmFpdHMgeworICAgICAgICBzdGF0
aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5KiBhcnJheSwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFycmF5LT5wdXNoQXJy
YXkodmFsdWUpOworICAgICAgICB9CisgICAgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPFByb3RvY29sOjpBcnJheTxUPj4geworICAgIHN0cnVj
dCBUcmFpdHMgeworICAgICAgICBzdGF0aWMgdm9pZCBwdXNoUmVmUHRyKEluc3BlY3RvckFycmF5
KiBhcnJheSwgUGFzc1JlZlB0cjxQcm90b2NvbDo6QXJyYXk8VD4+IHZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICBhcnJheS0+cHVzaFZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH07
Cit9OworCisvLyBIZWxwZXIgbWV0aG9kcyBmb3IgUHJvdG9jb2wgYW5kIG90aGVyIEluc3BlY3Rv
ciB0eXBlcyBhcmUgcHJvdmlkZWQgYnkKKy8vIHNwZWNpYWxpemF0aW9ucyBvZiBCaW5kaW5nVHJh
aXRzPFQ+LiBTb21lIGFyZSBnZW5lcmF0ZWQgZm9yIHByb3RvY29sIHR5cGVzLgorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorc3RydWN0IEJpbmRpbmdUcmFpdHMgeworICAgIHR5cGVkZWYgVCBCaW5k
aW5nVHlwZTsKKworICAgIHN0YXRpYyBJbnNwZWN0b3JWYWx1ZTo6VHlwZSB0eXBlVGFnKCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VD4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFs
dWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqKTsKKyNlbmRpZiAvLyAhQVNTRVJUX0RJ
U0FCTEVECit9OworCit0ZW1wbGF0ZTxJbnNwZWN0b3JWYWx1ZTo6VHlwZSBUWVBFPgorc3RydWN0
IFByaW1pdGl2ZUJpbmRpbmdUcmFpdHMgeworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBzdGF0
aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
CisgICAgeworICAgICAgICBBU1NFUlQodmFsdWUtPnR5cGUoKSA9PSBUWVBFKTsKKyAgICB9Cisj
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0
cnVjdCBCaW5kaW5nVHJhaXRzPFByb3RvY29sOjpBcnJheTxUPj4geworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFycmF5PFQ+PiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXJyYXk7CisgICAg
ICAgIGJvb2wgY2FzdFJlcyA9IHZhbHVlLT5hc0FycmF5KCZhcnJheSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFJlcywgY2FzdFJlcyk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAg
ICBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS5nZXQoKSk7CisjZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoQXJyYXk8VD4pID09
IHNpemVvZihJbnNwZWN0b3JBcnJheSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEFycmF5PFQ+Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXlCYXNl
Kj4oYXJyYXkuZ2V0KCkpKTsKKyAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yVmFsdWUqIHZhbHVl
KQorICAgIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheTsKKyAgICAgICAg
Ym9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJyYXkoJmFycmF5KTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGFycmF5LT5sZW5ndGgoKTsgaSsrKQorICAgICAgICAgICAgQmluZGluZ1RyYWl0czxUPjo6YXNz
ZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoYXJyYXktPmdldChpKS5nZXQoKSk7CisgICAgfQorI2Vu
ZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBCaW5kaW5n
VHJhaXRzPEluc3BlY3RvclZhbHVlPiB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHN0YXRp
YyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZhbHVlKikKKyAgICB7
CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yQXJyYXk+IDogcHVibGljIFByaW1pdGl2ZUJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6OkFycmF5PiB7IH07Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvck9iamVjdD4gOiBwdWJsaWMgUHJpbWl0aXZlQmlu
ZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6T2JqZWN0PiB7IH07Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBCaW5kaW5nVHJhaXRzPFN0cmluZz4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6U3RyaW5nPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBCaW5kaW5nVHJhaXRzPGJvb2w+IDogcHVibGljIFByaW1pdGl2ZUJpbmRpbmdUcmFpdHM8SW5z
cGVjdG9yVmFsdWU6OlR5cGU6OkJvb2xlYW4+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRp
bmdUcmFpdHM8ZG91YmxlPiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3Rv
clZhbHVlOjpUeXBlOjpOdW1iZXI+IHsgfTsKKworLy8gRklYTUU6IEFkZCBhbiBJbnNwZWN0b3I6
OlR5cGUgdGFnIGZvciBpbnQgc28gd2UgY2FuIHJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZS4KK3Rl
bXBsYXRlPD4KK3N0cnVjdCBCaW5kaW5nVHJhaXRzPGludD4geworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JW
YWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBkb3VibGUgdjsKKyAgICAgICAgYm9vbCBjYXN0
UmVzID0gdmFsdWUtPmFzTnVtYmVyKCZ2KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVz
LCBjYXN0UmVzKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nh
c3Q8aW50Pih2KSkgPT0gdik7CisgICAgfQorI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKK307
CisKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCisKK3VzaW5nIFByb3RvY29sOjpCaW5kaW5nVHJh
aXRzOworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JQcm90b2NvbFR5cGVzX2gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVC
dWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVC
dWlsZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOWY3ODIxMjAwM2ZmNTQw
MWVjYjYzOWRkNWMzZTExYWUxYWJiOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
eXBlQnVpbGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjc1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDExIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEluc3Bl
Y3RvclR5cGVCdWlsZGVyX2gKLSNkZWZpbmUgSW5zcGVjdG9yVHlwZUJ1aWxkZXJfaAotCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFt
ZXNwYWNlIEluc3BlY3RvciB7Ci0KLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBPcHRPdXRwdXQgewotcHVibGljOgotICAgIE9wdE91dHB1dCgp
IDogbV9hc3NpZ25lZChmYWxzZSkgeyB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yPShUIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgICAgICBtX2Fzc2lnbmVkID0gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBib29sIGlzQXNzaWduZWQoKSBjb25zdCB7IHJldHVybiBtX2Fzc2ln
bmVkOyB9Ci0KLSAgICBUIGdldFZhbHVlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0Fzc2ln
bmVkKCkpOwotICAgICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
VCBtX3ZhbHVlOwotICAgIGJvb2wgbV9hc3NpZ25lZDsKLQotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE9wdE91dHB1dCk7Ci19OwotCi0vLyBUaGlzIGNsYXNzIHByb3ZpZGVzICJUcmFpdHMiIHR5
cGUgZm9yIHRoZSBpbnB1dCB0eXBlIFQuIEl0IGlzIHByb2dyYW1tZWQgdXNpbmcgQysrIHRlbXBs
YXRlIHNwZWNpYWxpemF0aW9uCi0vLyB0ZWNobmlxdWUuIEJ5IGRlZmF1bHQgaXQgc2ltcGx5IHRh
a2VzICJJdGVtVHJhaXRzIiB0eXBlIGZyb20gVCwgYnV0IGl0IGRvZXNuJ3Qgd29yayB3aXRoIHRo
ZSBiYXNlIHR5cGVzLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxw
ZXIgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6SXRlbVRyYWl0cyBUcmFpdHM7Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgQXJyYXkgOiBwdWJsaWMgSW5zcGVjdG9yQXJyYXlC
YXNlIHsKLXByaXZhdGU6Ci0gICAgQXJyYXkoKSB7IH0KLQotICAgIEluc3BlY3RvckFycmF5KiBv
cGVuQWNjZXNzb3JzKCkKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNw
ZWN0b3JBcnJheSkgPT0gc2l6ZW9mKEFycmF5PFQ+KSwgY2Fubm90X2Nhc3QpOwotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yQXJyYXkqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JB
cnJheUJhc2UqPih0aGlzKSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgdm9pZCBhZGRJdGVtKFBh
c3NSZWZQdHI8VD4gdmFsdWUpCi0gICAgewotICAgICAgICBBcnJheUl0ZW1IZWxwZXI8VD46OlRy
YWl0czo6cHVzaFJlZlB0cih0aGlzLT5vcGVuQWNjZXNzb3JzKCksIHZhbHVlKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGFkZEl0ZW0oVCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFycmF5SXRlbUhlbHBl
cjxUPjo6VHJhaXRzOjpwdXNoUmF3KHRoaXMtPm9wZW5BY2Nlc3NvcnMoKSwgdmFsdWUpOwotICAg
IH0KLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5PFQ+PiBjcmVhdGUoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheTxUPigpKTsKLSAgICB9Ci19OwotCi1zdHJ1
Y3QgU3RydWN0SXRlbVRyYWl0cyB7Ci0gICAgc3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0
b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAgIHsK
LSAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1ZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8
Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxTdHJpbmc+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsK
LSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJheSogYXJyYXksIGNvbnN0
IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoU3RyaW5n
KHZhbHVlKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJy
YXlJdGVtSGVscGVyPGludD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAgICBzdGF0aWMg
dm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgaW50IHZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBhcnJheS0+cHVzaEludCh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Owot
fTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRlbUhlbHBlcjxkb3VibGU+IHsKLSAgICBz
dHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIHZvaWQgcHVzaFJhdyhJbnNwZWN0b3JBcnJh
eSogYXJyYXksIGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1
c2hOdW1iZXIodmFsdWUpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0
cnVjdCBBcnJheUl0ZW1IZWxwZXI8Ym9vbD4gewotICAgIHN0cnVjdCBUcmFpdHMgewotICAgICAg
ICBzdGF0aWMgdm9pZCBwdXNoUmF3KEluc3BlY3RvckFycmF5KiBhcnJheSwgYm9vbCB2YWx1ZSkK
LSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hCb29sZWFuKHZhbHVlKTsKLSAgICAg
ICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQXJyYXlJdGVtSGVscGVyPElu
c3BlY3RvclZhbHVlPiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lk
IHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPEluc3BlY3RvclZh
bHVlPiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXktPnB1c2hWYWx1ZSh2YWx1
ZSk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFycmF5SXRl
bUhlbHBlcjxJbnNwZWN0b3JPYmplY3Q+IHsKLSAgICBzdHJ1Y3QgVHJhaXRzIHsKLSAgICAgICAg
c3RhdGljIHZvaWQgcHVzaFJlZlB0cihJbnNwZWN0b3JBcnJheSogYXJyYXksIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhcnJheS0+cHVz
aFZhbHVlKHZhbHVlKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1
Y3QgQXJyYXlJdGVtSGVscGVyPEluc3BlY3RvckFycmF5PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQdHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
YXJyYXktPnB1c2hBcnJheSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBBcnJheUl0ZW1IZWxwZXI8VHlwZUJ1aWxkZXI6OkFycmF5
PFQ+PiB7Ci0gICAgc3RydWN0IFRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1c2hSZWZQ
dHIoSW5zcGVjdG9yQXJyYXkqIGFycmF5LCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
Pj4gdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5LT5wdXNoVmFsdWUodmFsdWUp
OwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLS8vIEhlbHBlciBtZXRob2RzIGZvciBUeXBlQnVp
bGRlciBhbmQgb3RoZXIgSW5zcGVjdG9yIHR5cGVzIGFyZSBwcm92aWRlZCBieQotLy8gc3BlY2lh
bGl6YXRpb25zIG9mIEJpbmRpbmdUcmFpdHM8VD4uIFNvbWUgYXJlIGdlbmVyYXRlZCBmb3IgcHJv
dG9jb2wgdHlwZXMuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQmluZGluZ1RyYWl0
cyB7Ci0gICAgdHlwZWRlZiBUIEJpbmRpbmdUeXBlOwotCi0gICAgc3RhdGljIEluc3BlY3RvclZh
bHVlOjpUeXBlIHR5cGVUYWcoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUPiBydW50aW1lQ2Fz
dChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4pOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3JWYWx1ZSop
OwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKLX07Ci0KLXRlbXBsYXRlPEluc3BlY3RvclZh
bHVlOjpUeXBlIFRZUEU+Ci1zdHJ1Y3QgUHJpbWl0aXZlQmluZGluZ1RyYWl0cyB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAotICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBl
KEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZS0+dHlw
ZSgpID09IFRZUEUpOwotICAgIH0KLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IEJpbmRpbmdUcmFpdHM8VHlwZUJ1aWxkZXI6OkFy
cmF5PFQ+PiB7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk8VD4+IHJ1bnRpbWVDYXN0KFBh
c3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQotICAgIHsKLSAgICAgICAgUmVmUHRyPElu
c3BlY3RvckFycmF5PiBhcnJheTsKLSAgICAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzQXJy
YXkoJmFycmF5KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFy
cmF5LmdldCgpKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZihBcnJheTxUPikgPT0gc2l6ZW9mKEluc3BlY3RvckFycmF5KSwgdHlwZV9j
YXN0X3Byb2JsZW0pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXJyYXk8VD4qPihzdGF0
aWNfY2FzdDxJbnNwZWN0b3JBcnJheUJhc2UqPihhcnJheS5nZXQoKSkpOwotICAgIH0KLQotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZShJbnNwZWN0b3JWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+IGFycmF5OwotICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNBcnJheSgm
YXJyYXkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyBpKyspCi0gICAgICAg
ICAgICBCaW5kaW5nVHJhaXRzPFQ+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS0+
Z2V0KGkpLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfTsKLQot
dGVtcGxhdGU8Pgotc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU+IHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUoSW5zcGVjdG9yVmFsdWUqKQotICAgIHsKLSAgICB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNB
QkxFRAotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3JBcnJh
eT4gOiBwdWJsaWMgUHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6
QXJyYXk+IHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yT2Jq
ZWN0PiA6IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBl
OjpPYmplY3Q+IHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8U3RyaW5nPiA6
IHB1YmxpYyBQcmltaXRpdmVCaW5kaW5nVHJhaXRzPEluc3BlY3RvclZhbHVlOjpUeXBlOjpTdHJp
bmc+IHsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8Ym9vbD4gOiBwdWJsaWMg
UHJpbWl0aXZlQmluZGluZ1RyYWl0czxJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6Qm9vbGVhbj4geyB9
OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxkb3VibGU+IDogcHVibGljIFByaW1p
dGl2ZUJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yVmFsdWU6OlR5cGU6Ok51bWJlcj4geyB9OwotCi0v
LyBGSVhNRTogQWRkIGFuIEluc3BlY3Rvcjo6VHlwZSB0YWcgZm9yIGludCBzbyB3ZSBjYW4gcmVt
b3ZlIHRoaXMgc3BlY2lhbCBjYXNlLgotdGVtcGxhdGU8Pgotc3RydWN0IEJpbmRpbmdUcmFpdHM8
aW50PiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVl
SGFzRXhwZWN0ZWRUeXBlKEluc3BlY3RvclZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGRv
dWJsZSB2OwotICAgICAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNOdW1iZXIoJnYpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNhc3RSZXMsIGNhc3RSZXMpOwotICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxpbnQ+KHYpKSA9PSB2KTsKLSAgICB9Ci0jZW5k
aWYgLy8gIUFTU0VSVF9ESVNBQkxFRAotfTsKLQotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIK
LQotdXNpbmcgVHlwZUJ1aWxkZXI6OkJpbmRpbmdUcmFpdHM7Ci0KLX0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKLQotI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvclR5cGVCdWlsZGVyX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggYzdhODIyZWY5ZWY0Mzk5NTJh
YjdmZjIwYjg0NDU5ZWI4MWZhMTFkMy4uN2M5NTBlOGI5MDdhYjMxYWYzZmJmNjQxZGY4NDBlNThm
MWZiZTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbEZyYW1lLmNwcApAQCAtNTgsOSArNTgsOSBAQCBib29sIFNjcmlwdENhbGxGcmFtZTo6
aXNFcXVhbChjb25zdCBTY3JpcHRDYWxsRnJhbWUmIG8pIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpD
YWxsRnJhbWU+IFNjcmlwdENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAor
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDYWxsRnJhbWU+IFNjcmlw
dENhbGxGcmFtZTo6YnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU6OmNyZWF0ZSgpCisgICAg
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNhbGxGcmFtZTo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldEZ1bmN0aW9uTmFtZShtX2Z1bmN0aW9uTmFtZSkKICAgICAgICAgLnNldFVy
bChtX3NjcmlwdE5hbWUpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKG1fbGluZU51bWJlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCmlu
ZGV4IDAwNTI0ZGM1MDFkMGViMzViOGRiM2U0MjFjZjZkNDZmOWRmYmZiYmMuLmU5YzEwZmY5ZTNi
YjZhN2U4OTYyN2VjOTNmZWNlZWIwNmRkZWFiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNp
bmNsdWRlICJJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpT
UHJvdG9jb2xUeXBlcy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNjcmlwdENhbGxGcmFt
ZSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4gYnVpbGRJbnNwZWN0b3JPYmpl
Y3QoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6
OkNhbGxGcmFtZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKICNlbmRpZgogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2suY3BwCmluZGV4IDliM2NjYTFkZmE5Y2FhOGJlZjRiYWUzYzMxMzI0MTQxMjVhNGRmODgu
LjZmODFhNThlZGZjY2IzYTU1YmFhZWM0M2EyMzU3ODI5YWVkNTdkYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKQEAgLTEw
Nyw5ICsxMDcsOSBAQCBib29sIFNjcmlwdENhbGxTdGFjazo6aXNFcXVhbChTY3JpcHRDYWxsU3Rh
Y2sqIG8pIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xl
OjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25z
dAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBTY3JpcHRDYWxsU3RhY2s6OmJ1aWxkSW5zcGVjdG9y
QXJyYXkoKSBjb25zdAogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBmcmFtZXMgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gZnJhbWVz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Zy
YW1lcy5zaXplKCk7IGkrKykKICAgICAgICAgZnJhbWVzLT5hZGRJdGVtKG1fZnJhbWVzLmF0KGkp
LmJ1aWxkSW5zcGVjdG9yT2JqZWN0KCkpOwogICAgIHJldHVybiBmcmFtZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAppbmRleCA5YzJh
NTM0ZDhlODI4NTg4MjM0NTFkMWIwNjhhYWM3YzQ4ZDE3MjI5Li42MWRhOWU0ODk5OTNhODNjZTEx
MjQzYWM3ZWYyMmIwYjYyNDQ1YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUgIkluc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgi
CiAjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC02Miw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRXF1YWwoU2NyaXB0Q2FsbFN0YWNrKikgY29uc3Q7CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNw
ZWN0b3JBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gYnVpbGRJbnNw
ZWN0b3JBcnJheSgpIGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAK
aW5kZXggYmUwOTYxMTYxMTdhNTc3MTYwZDk3NThkMzk3N2I4Zjc2MTc3MTg1ZS4uNmVmNjNmMDI3
ZWIwOWMzZjg0OTVhZjRkYzRjZDAwNmJkMGNjNjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikK
ICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVj
dChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IG9iamVjdFRv
SW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQordm9pZCBJbnNwZWN0
b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IG9iamVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpbnRzKQog
ewogICAgIGlmIChtX2VuYWJsZWQgJiYgbV9mcm9udGVuZERpc3BhdGNoZXIpIHsKICAgICAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmluc3BlY3Qob2JqZWN0VG9JbnNwZWN0LCBoaW50cyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuaAppbmRleCAxZDMwZTJlMDE2OTU5YjQwOGE4M2E0ZWQ5NTk1NGE2YzVjNTJhOWEy
Li43MDhkNmJlOGEwMDNiNTIwMzQ5YmM1YzMwY2VmNDg2ZjM2ZGFmMTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50
LmgKQEAgLTYwLDE0ICs2MCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nKikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGluc3BlY3QoUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBoaW50cyk7CisgICAgdm9pZCBpbnNwZWN0KFBhc3NSZWZQdHI8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gaGludHMpOwogICAgIHZvaWQgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVu
ZChjb25zdCBTdHJpbmcmIHNjcmlwdCk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcGVuZGluZ0V2YWx1YXRlVGVz
dENvbW1hbmRzOwotICAgIHN0ZDo6cGFpcjxSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0
YTsKKyAgICBzdGQ6OnBhaXI8UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CiAgICAgYm9v
bCBtX2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IDVlMWI2NDY0NjNkZjU1MWU4MmQ0NTk1N2I1YWY3Yzk2MGZlYzI1ZWMuLjNhNTI4YWZhMmU0NTIw
YjBlNDA0ZDg3NTZiNWRkMzBhYTI4ODNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC0xNzUsMTkgKzE3NSwxOSBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKIAogc3RhdGlj
IGJvb2wgYnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlU3Ry
aW5nLCBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSogb3V0cHV0KQogewotICAgIGlmICh0eXBl
U3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEpTRW51bUNvbnN0YW50VmFsdWUo
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6
OkxvZykpIHsKKyAgICBpZiAodHlwZVN0cmluZyA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRK
U0VudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7CiAgICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3Bv
aW50QWN0aW9uVHlwZUxvZzsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0
eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEpTRW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU6OkV2YWx1YXRlKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgewogICAgICAgICAqb3V0cHV0ID0g
U2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Omdl
dEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgeworICAgIGlmICh0eXBlU3RyaW5nID09IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewogICAgICAg
ICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlByb2JlKSkgeworICAgIGlmICh0eXBlU3Ry
aW5nID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEpTRW51bUNvbnN0YW50VmFsdWUoSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlByb2JlKSkg
ewogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVQcm9iZTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjM5LDkgKzIzOSw5IEBAIGJvb2wgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJp
bmcqIGVycm9yU3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVt
bk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNv
bnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRp
b25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9p
bnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKLSAgICBsb2Nh
dGlvbnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKKyAgICBsb2NhdGlvbnMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJl
Z2V4KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRWl0aGVyIHVybCBv
ciB1cmxSZWdleCBtdXN0IGJlIHNwZWNpZmllZC4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjc4
LDcgKzI3OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5
VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpCiAgICAgICAgIGlmICghbWF0Y2hl
cyhzY3JpcHRVUkwsIHVybCwgaXNSZWdleCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBs
b2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBpdC0+a2V5
LCBicmVha3BvaW50KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChicmVha3BvaW50SWRl
bnRpZmllciwgaXQtPmtleSwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAg
ICAgICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShsb2NhdGlvbik7CiAgICAgfQpAQCAtMzAwLDcg
KzMwMCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBJbnNwZWN0b3JPYmplY3QqIGxvY2F0aW9uLCBKCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9j
YXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRp
b24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExv
Y2F0aW9uKQogewogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5zaWduZWQgbGlu
ZU51bWJlcjsKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAg
cmVzdW1lKGVycm9yU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIEpTQzo6U291cmNl
SUQgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRl
bnRpZmllciwgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYg
YnJlYWtwb2ludCkKIHsKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBzY3JpcHRJdGVyYXRvciA9
IG1fc2NyaXB0cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9z
Y3JpcHRzLmVuZCgpKQpAQCAtMzg4LDE0ICszODgsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnIKICAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3IgPSBtX2JyZWFrcG9p
bnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBWZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+KCkpLml0ZXJhdG9yOwogICAgIGRlYnVn
U2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVh
a3BvaW50SUQpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6
TG9jYXRpb246OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
TG9jYXRpb246OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTY3JpcHRJZChTdHJpbmc6Om51bWJlcihz
b3VyY2VJRCkpCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGFjdHVhbExpbmVOdW1iZXIpOwogICAg
IGxvY2F0aW9uLT5zZXRDb2x1bW5OdW1iZXIoYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAgICByZXR1
cm4gbG9jYXRpb247CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5D
b250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRFN0ciwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPj4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJj
aEluQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SURTdHIs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFy
Y2hNYXRjaD4+JiByZXN1bHRzKQogewogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdl
eCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBv
cHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFsc2U7CkBA
IC00MTgsNyArNDE4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHMKICAgICAgICAgKmVycm9y
ID0gIk5vIHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJRFN0cjsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgZGV0YWlscykKK3ZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mIGRldGFpbHMpCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9W
YWx1ZSgpKSB7CkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnMKICAg
ICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvci4gQ291bGQg
bm90IGNoYW5nZSBwYXVzZSBvbiBleGNlcHRpb25zIHN0YXRlIik7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lv
biwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2
YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29u
c3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Y29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBj
b25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZp
ZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQog
ewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQpOwogICAgIGlmIChp
bmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTU1MywxNSArNTUzLDE1IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0
IFN0cmluZyYgZGlyZWN0aXZlCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJh
bWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1l
cygpCiB7CiAgICAgaWYgKCFtX3BhdXNlZFNjcmlwdFN0YXRlKQotICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNy
ZWF0ZSgpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRTY3JpcHRTdGF0ZSk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKICAgICB9CiAKICAgICByZXR1
cm4gaW5qZWN0ZWRTY3JpcHQud3JhcENhbGxGcmFtZXMobV9jdXJyZW50Q2FsbFN0YWNrKTsKQEAg
LTYxMiw3ICs2MTIsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291
cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQsIGNvbnN0IFNjcmlwdAogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3BvaW50KGl0LT5r
ZXksIHNvdXJjZUlELCBicmVha3BvaW50KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChp
dC0+a2V5LCBzb3VyY2VJRCwgYnJlYWtwb2ludCk7CiAgICAgICAgIGlmIChsb2NhdGlvbikKICAg
ICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQoaXQtPmtl
eSwgbG9jYXRpb24pOwogICAgIH0KQEAgLTY2MCw4ICs2NjAsOCBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsCiAgICAgaW50IHNhbXBsZUlkID0gbV9uZXh0UHJvYmVTYW1wbGVJZCsrOwogCiAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+
aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBwYXlsb2FkID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVj
dChzYW1wbGUsIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24pKTsKLSAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpQcm9iZVNhbXBsZT4gcmVzdWx0ID0gVHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpQcm9iZVNhbXBsZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcGF5bG9hZCA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3Qoc2FtcGxlLCBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSk7Cisg
ICAgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6UHJvYmVTYW1wbGU+IHJlc3VsdCA9IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6UHJvYmVTYW1wbGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRQcm9iZUlk
KGFjdGlvbi5pZGVudGlmaWVyKQogICAgICAgICAuc2V0U2FtcGxlSWQoc2FtcGxlSWQpCiAgICAg
ICAgIC5zZXRCYXRjaElkKGhpdENvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IDg0N2U3OGI2MGY1ZGNjZjk2OWZiM2QwMTEzZWQyNTIzZWEwMjdkM2UuLjdjZmQ1NzBlNTdj
NTJhZGU4OGFmZjFiNzZiZDBmNzFmODAxMDY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmgKQEAgLTcxLDIwICs3MSwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9y
U3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZl
KEVycm9yU3RyaW5nKiwgYm9vbCBhY3RpdmUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBp
bnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJl
Z2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVh
a3BvaW50SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2Nh
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0
IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0
SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIFN0cmluZyogc2NyaXB0U291cmNlKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHN0ZXBPdmVyKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHN0ZXBJbnRvKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0
ZXBPdXQoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VP
bkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEks
IGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3Qg
Ym9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwg
Y29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBi
b29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcqKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQYXVzZWQoKTsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRDbGVhckdsb2JhbE9iamVjdCgpOwogCiBwcml2YXRl
OgotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJlbnRDYWxsRnJhbWVzKCk7
CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQm
KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQg
ZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgb3ZlcnJpZGUgZmluYWw7CkBA
IC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFj
dGlvblNvdW5kKGludCBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCBpbnQgaGl0Q291bnQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBzYW1wbGUpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IHJlc29sdmVCcmVha3Bv
aW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIsIEpTQzo6U291cmNlSUQsIGNv
bnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBi
cmVha3BvaW50SWRlbnRpZmllciwgSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2lu
dCYpOwogICAgIGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBjbGVh
ckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKCk7CiAgICAgdm9pZCBjbGVhckluc3BlY3RvckJyZWFr
cG9pbnRTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCA4MmQ1
OWEwNmU1ZDNjNjMwZjA0ZDIxYzEzNWMwODhkNDllOGMwMDdkLi5hYTkzYzM0NDQwZjc4YTZkNzM1
MmQ0OGU0MWRiMTU0OTFiOTI3MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNw
cApAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJv
ZmlsZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4gcHJwUHJvZmlsZSkKICAgICAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPmFkZFByb2ZpbGVIZWFkZXIoY3JlYXRlUHJvZmlsZUhlYWRlcigqcHJv
ZmlsZSkpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhl
YWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBK
U0M6OlByb2ZpbGUmIHByb2ZpbGUpCitQYXNzUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6UHJv
ZmlsZUhlYWRlcj4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBKU0M6OlByb2ZpbGUmIHByb2ZpbGUpCiB7Ci0gICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFR5cGVJZChUeXBl
QnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OlR5cGVJZDo6Q1BVKQorICAgIHJldHVy
biBQcm90b2NvbDo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisgICAgICAgIC5z
ZXRUeXBlSWQoUHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpUeXBlSWQ6OkNQVSkK
ICAgICAgICAgLnNldFVpZChwcm9maWxlLnVpZCgpKQogICAgICAgICAuc2V0VGl0bGUocHJvZmls
ZS50aXRsZSgpKQogICAgICAgICAucmVsZWFzZSgpOwpAQCAtMTMxLDMwICsxMzEsMzAgQEAgU3Ry
aW5nIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgp
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lLCAnLicsIFN0
cmluZzo6bnVtYmVyKG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKyspKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9m
aWxlSGVhZGVyPj4mIGhlYWRlcnMpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFBy
b2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2Nv
bDo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYgaGVhZGVycykKIHsKICAgICBtX3Byb2ZpbGVI
ZWFkZXJzUmVxdWVzdGVkID0gdHJ1ZTsKLSAgICBoZWFkZXJzID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj46OmNyZWF0ZSgpOworICAgIGhl
YWRlcnMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVy
Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb2ZpbGUgOiBtX3Byb2ZpbGVzLnZhbHVl
cygpKQogICAgICAgICBoZWFkZXJzLT5hZGRJdGVtKGNyZWF0ZVByb2ZpbGVIZWFkZXIoKnByb2Zp
bGUuZ2V0KCkpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpDUFVQcm9maWxlTm9kZUNhbGw+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJv
ZmlsZU5vZGU6OkNhbGwmIGNhbGwpCitzdGF0aWMgUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJvZmls
ZXI6OkNQVVByb2ZpbGVOb2RlQ2FsbD4gYnVpbGRJbnNwZWN0b3JPYmplY3QoY29uc3QgSlNDOjpQ
cm9maWxlTm9kZTo6Q2FsbCYgY2FsbCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2Zp
bGVyOjpDUFVQcm9maWxlTm9kZUNhbGw+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6
Q1BVUHJvZmlsZU5vZGVDYWxsOjpjcmVhdGUoKQorICAgIFJlZlB0cjxQcm90b2NvbDo6UHJvZmls
ZXI6OkNQVVByb2ZpbGVOb2RlQ2FsbD4gcmVzdWx0ID0gUHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQ
cm9maWxlTm9kZUNhbGw6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydFRpbWUoY2FsbC5zdGFy
dFRpbWUoKSkKICAgICAgICAgLnNldFRvdGFsVGltZShjYWxsLnRvdGFsVGltZSgpKTsKICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoY29uc3Qg
SlNDOjpQcm9maWxlTm9kZSogbm9kZSkKK3N0YXRpYyBQYXNzUmVmUHRyPFByb3RvY29sOjpQcm9m
aWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJv
ZmlsZU5vZGUqIG5vZGUpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlQ2FsbD4+IGNhbGxzID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGVDYWxsPjo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVBy
b2ZpbGVOb2RlQ2FsbD4+IGNhbGxzID0gUHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpQcm9maWxl
cjo6Q1BVUHJvZmlsZU5vZGVDYWxsPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChjb25zdCBKU0M6OlBy
b2ZpbGVOb2RlOjpDYWxsJiBjYWxsIDogbm9kZS0+Y2FsbHMoKSkKICAgICAgICAgY2FsbHMtPmFk
ZEl0ZW0oYnVpbGRJbnNwZWN0b3JPYmplY3QoY2FsbCkpOwogCi0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpQcm9m
aWxlcjo6Q1BVUHJvZmlsZU5vZGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPFByb3RvY29sOjpQcm9m
aWxlcjo6Q1BVUHJvZmlsZU5vZGU+IHJlc3VsdCA9IFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJv
ZmlsZU5vZGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRJZChub2RlLT5pZCgpKQogICAgICAgICAu
c2V0Q2FsbHMoY2FsbHMucmVsZWFzZSgpKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+IGJ1aWxkSW5z
cGVjdG9yT2JqZWN0KGNvCiAgICAgfQogCiAgICAgaWYgKCFub2RlLT5jaGlsZHJlbigpLmlzRW1w
dHkoKSkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+PiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAg
IFJlZlB0cjxQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9k
ZT4+IGNoaWxkcmVuID0gUHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJv
ZmlsZU5vZGU+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChSZWZQdHI8SlNDOjpQcm9maWxlTm9k
ZT4gcHJvZmlsZU5vZGUgOiBub2RlLT5jaGlsZHJlbigpKQogICAgICAgICAgICAgY2hpbGRyZW4t
PmFkZEl0ZW0oYnVpbGRJbnNwZWN0b3JPYmplY3QocHJvZmlsZU5vZGUuZ2V0KCkpKTsKICAgICAg
ICAgcmVzdWx0LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CkBAIC0xNzcsMTMgKzE3NywxMyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPiBi
dWlsZEluc3BlY3Rvck9iamVjdChjbwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6YnVpbGRQcm9maWxlSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJv
ZmlsZSogcHJvZmlsZSkKK1Bhc3NSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxl
PiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpidWlsZFByb2ZpbGVJbnNwZWN0b3JPYmplY3QoY29u
c3QgSlNDOjpQcm9maWxlKiBwcm9maWxlKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IHJvb3ROb2RlcyA9IFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGVOb2RlPjo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6UHJvZmlsZXI6
OkNQVVByb2ZpbGVOb2RlPj4gcm9vdE5vZGVzID0gUHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpQ
cm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVhdGUoKTsKICAgICBmb3IgKFJlZlB0cjxKU0M6
OlByb2ZpbGVOb2RlPiBwcm9maWxlTm9kZSA6IHByb2ZpbGUtPmhlYWQoKS0+Y2hpbGRyZW4oKSkK
ICAgICAgICAgcm9vdE5vZGVzLT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0KHByb2ZpbGVO
b2RlLmdldCgpKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9m
aWxlPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU6OmNyZWF0ZSgp
CisgICAgUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gcmVzdWx0ID0gUHJv
dG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9maWxlOjpjcmVhdGUoKQogICAgICAgICAuc2V0Um9vdE5v
ZGVzKHJvb3ROb2Rlcyk7CiAKICAgICBpZiAocHJvZmlsZS0+aWRsZVRpbWUoKSkKQEAgLTE5Miw3
ICsxOTIsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4g
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YnVpbGRQcm9maQogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldENQVVByb2ZpbGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmF3VWlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OlByb2ZpbGVyOjpDUFVQcm9maWxlPiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBy
YXdVaWQsIFJlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+JiBwcm9maWxlT2Jq
ZWN0KQogewogICAgIHVuc2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYXdVaWQp
OwogICAgIGF1dG8gaXQgPSBtX3Byb2ZpbGVzLmZpbmQodWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuaAppbmRleCA1ZTAwZmMxNWI2OTczODJlNmU4OTU2ZTJkOTExNjkyMDlmMzhlNWE2
Li42MWEzNjE0NmQ5ZmZkOWY0NWRkMGQwZTRmYTlhODdmNDA3NmZmNzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5oCkBAIC02OCwxMSArNjgsMTEgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyUHJvZmlsZXMoRXJyb3JTdHJpbmcqKSBvdmVycmlkZSBmaW5hbCB7IHJl
c2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9m
aWxlSGVhZGVyPj4mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q1BVUHJv
ZmlsZShFcnJvclN0cmluZyosIGludCB1aWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6
OkNQVVByb2ZpbGU+Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2Zp
bGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6
UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
dm9pZCBnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50IHVpZCwgUmVmUHRyPFByb3RvY29s
OjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4mKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVp
ZCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
UHJvZmlsZXI6OkNQVVByb2ZpbGU+IGJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVjdChjb25zdCBK
U0M6OlByb2ZpbGUqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6
OkNQVVByb2ZpbGU+IGJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlByb2Zp
bGUqKTsKIAogICAgIGVudW0gU2hvdWxkUmVjb21waWxlIHsgU2tpcFJlY29tcGlsZSwgUmVjb21w
aWxlIH07CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIGdldFVz
ZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpOwogCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlNDOjpQ
cm9maWxlJik7CisgICAgUGFzc1JlZlB0cjxQcm90b2NvbDo6UHJvZmlsZXI6OlByb2ZpbGVIZWFk
ZXI+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlNDOjpQcm9maWxlJik7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3JQcm9maWxlckJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAK
aW5kZXggOTdkNDQ5YjdmZjJjYmFhM2M0MzFkMmZhNTA2NjFlZGE0Y2ZiNGNmYi4uZGQ2OGQ4ZDZj
NzlkNGEyMTIxN2E4NjIyOTNiMjdkMTNmNjYxYjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwCkBAIC04MCwxNSArODAsMTUgQEAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXAKICAg
ICByZXR1cm4gcHJlc2VudFN0YXRlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiBidWlsZEVycm9yUmFuZ2VPYmplY3Qo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiB0b2tlbkxvY2F0aW9uKQorc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gYnVpbGRFcnJvclJhbmdl
T2JqZWN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbikKIHsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0ID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4gcmVzdWx0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZTo6Y3JlYXRlKCkKICAg
ICAgICAgLnNldFN0YXJ0T2Zmc2V0KHRva2VuTG9jYXRpb24uc3RhcnRPZmZzZXQpCiAgICAgICAg
IC5zZXRFbmRPZmZzZXQodG9rZW5Mb2NhdGlvbi5lbmRPZmZzZXQpOwogICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cGFyc2UoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+JiByYW5nZSkKK3ZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4mIHJhbmdlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbFZNKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtOTgsMTYgKzk4
LDE2IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjCiAKICAgICBzd2l0Y2ggKGVycm9yLm1fc3lu
dGF4RXJyb3JUeXBlKSB7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lOgot
ICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4
RXJyb3JUeXBlOjpOb25lOworICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU6Ci0gICAgICAgICpyZXN1bHQg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OklycmVj
b3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpTeW50YXhFcnJvclR5cGU6OklycmVjb3ZlcmFibGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbDoKLSAgICAgICAg
KnJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlw
ZTo6VW50ZXJtaW5hdGVkTGl0ZXJhbDsKKyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZTo6VW50ZXJtaW5hdGVkTGl0ZXJhbDsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JSZWNvdmVyYWJs
ZToKLSAgICAgICAgKnJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN5
bnRheEVycm9yVHlwZTo6UmVjb3ZlcmFibGU7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpTeW50YXhFcnJvclR5cGU6OlJlY292ZXJhYmxlOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIElu
c3BlYwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFu
ZExpbmVBUEksIGNvbnN0IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRl
Q29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIGNvbnN0
IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNv
bnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3Qg
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCog
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bikKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVj
dGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0cmluZywgZXhlY3V0aW9uQ29udGV4dElkKTsKICAgICBp
ZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZXhwCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4qIGNvbnN0IG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05v
dFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVy
bkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIGNvbnN0IG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBj
b25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNv
bnN0IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgewpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJv
b2wqIGNvbnN0IG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50
ZXJuYWxQcm9wZXJ0aWVzKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25z
dCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPj4m
IHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVybmFsUHJv
cGVydGllcykKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9iamVjdElkKTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CkBAIC0xOTcsMTEgKzE5NywxMSBA
QCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cnVuKEVycm9yU3RyaW5nKikKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0
T2Zmc2V0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9u
Pj4mIHR5cGVEZXNjcmlwdGlvbnMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVu
dGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpUeXBlRGVzY3JpcHRpb24+PiYgdHlwZURlc2NyaXB0aW9ucykKIHsKICAgICBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgVk0mIHZtID0gZ2xvYmFsVk0oKTsKLSAgICB0
eXBlRGVzY3JpcHRpb25zID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPjo6Y3JlYXRlKCk7CisgICAg
dHlwZURlc2NyaXB0aW9ucyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICgh
dm0udHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJUaGUgVk0gZG9lcyBub3QgY3VycmVudGx5IGhhdmUgVHlwZSBJbmZvcm1hdGlvbi4iKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcqIGVy
CiAgICAgICAgIGxvY2F0aW9uLT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2VJRCIpLCAm
c291cmNlSURBc1N0cmluZyk7CiAgICAgICAgIGxvY2F0aW9uLT5nZXROdW1iZXIoQVNDSUlMaXRl
cmFsKCJkaXZvdCIpLCAmZGl2b3QpOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+IHR5cGVEZXNjcmlwdGlvbiA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbjo6Y3JlYXRlKCk7Cisg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRp
b24+IHR5cGVEZXNjcmlwdGlvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVE
ZXNjcmlwdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGJvb2wgb2theTsKICAgICAgICAgdm0udHlw
ZVByb2ZpbGVyKCktPmdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihzdGF0
aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgZGl2b3Qs
IHNvdXJjZUlEQXNTdHJpbmcudG9JbnRQdHJTdHJpY3QoJm9rYXkpLCB0eXBlRGVzY3JpcHRpb24p
OwogICAgICAgICB0eXBlRGVzY3JpcHRpb25zLT5hZGRJdGVtKHR5cGVEZXNjcmlwdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDRmNDk3NDhhNTc1NDZlODg2NGEzZTFlMDZh
MjAzYzliNzYyY2FhM2MuLmI5YjBiMTM3YzJkOGEyMmQyODRmOGU0YmRjZWNmYmRjNDQzNTIyMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC02MSwxNCArNjEsMTQgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlIHsgbV9l
bmFibGVkID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikg
b3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXJzZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwg
Y29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCB2b2lkIGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0
IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0
T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6RXJyb3JSYW5nZT4mKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGlu
ZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwg
Y29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lk
IGNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wq
IGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+
KiB3YXNUaHJvd24pIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2Jq
ZWN0KEVycm9yU3RyaW5nKiwgY29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9w
ZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2Ny
aXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50
ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFz
ZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMo
RXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mIGxv
Y2F0aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+Jikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgbG9jYXRpb25z
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L19faW5pdF9fLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vX19pbml0X18ucHkKaW5kZXggMGI3NjExOGNlNWVlMjlmODRjZDU1MGU5ODQyMTgwYTRl
YjM0OTczYS4uYmI1Zjk3ZTJiMzEwYTA1MjViMGE4ZWEzOWViMzY4ODgyOTgyMWVmMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vX19p
bml0X18ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vX19pbml0X18ucHkKQEAgLTgsNSArOCw1IEBAIGZyb20gZ2VuZXJhdGVfYmFja2VuZF9k
aXNwYXRjaGVyX2hlYWRlciBpbXBvcnQgKgogZnJvbSBnZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0
Y2hlcl9oZWFkZXIgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9p
bXBsZW1lbnRhdGlvbiBpbXBvcnQgKgotZnJvbSBnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVy
IGltcG9ydCAqCi1mcm9tIGdlbmVyYXRlX3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbiBpbXBv
cnQgKgorZnJvbSBnZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIgaW1wb3J0ICoKK2Zyb20g
Z2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVh
ZGVyLnB5CmluZGV4IDI2ZjRiMzlkMDNhZTViYzNhNDNjNjQzMTRlYjgwMmI0MjI3Zjk5ODcuLmMw
ZmVmNjY1Y2I2ZTQyMTBhZWQ3ZTZhMjU2ZjI0YmY0NmE3YmEwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5w
eQpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRv
cihHZW5lcmF0b3IpOgogCiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAg
aGVhZGVycyA9IFsKLSAgICAgICAgICAgICciSW5zcGVjdG9yJXNUeXBlQnVpbGRlcnMuaCInICUg
c2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKKyAgICAgICAgICAgICci
SW5zcGVjdG9yJXNQcm90b2NvbFR5cGVzLmgiJyAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0
dGluZygncHJlZml4JyksCiAgICAgICAgICAgICAnPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5oPicsCiAgICAgICAgICAgICAnPHd0Zi9QYXNzUmVmUHRyLmg+JywKICAgICAg
ICAgICAgICc8d3RmL3RleHQvV1RGU3RyaW5nLmg+J10KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQppbmRleCA4N2EyYjhmZTJkYWIxOWQ3YzFhMTQ0NTRiNGM2YTIxNDM5ZGYzMjgyLi42
OGYyMTQwMzFmOTRlMjBjOWI0MWZhZjljYzgwNjUwNmU2ZDYwYWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9iYWNr
ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xNDgsNyArMTQ4LDcgQEAgY2xhc3MgQmFja2VuZERpc3Bh
dGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAg
ICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGlmICglKHBhcmFtZXRl
ck5hbWUpcyknICUgcGFyYW1fYXJncykKICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRl
cl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNvbk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRo
b2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksICUocGFyYW1ldGVyTmFtZSlz
KTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAgIGVsaWYgcGFyYW1ldGVyLnR5cGUuaXNfZW51
bSgpOgotICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcg
ICAganNvbk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1l
dGVyTmFtZSlzIiksIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldCUoZnJhbWV3b3JrUHJlZml4
KXNFbnVtQ29uc3RhbnRWYWx1ZSglKHBhcmFtZXRlck5hbWUpcykpOycgJSBwYXJhbV9hcmdzKQor
ICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAganNv
bk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFt
ZSlzIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldCUoZnJhbWV3b3JrUHJlZml4KXNFbnVtQ29u
c3RhbnRWYWx1ZSglKHBhcmFtZXRlck5hbWUpcykpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVu
ZCgnICAgIGpzb25NZXNzYWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBh
cmFtZXRlck5hbWUpcyIpLCAlKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAKQEAg
LTIxNSw3ICsyMTUsNyBAQCBjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVy
X2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBpZiAob3V0XyUocGFyYW1ldGVyTmFtZSlzKScg
JSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3Np
Z25tZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhvZClzKEFT
Q0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgb3V0XyUocGFyYW1ldGVyTmFtZSlzKTsn
ICUgcGFyYW1fYXJncykKICAgICAgICAgICAgICAgICBlbGlmIHBhcmFtZXRlci50eXBlLmlzX2Vu
dW0oKToKLSAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBl
bmQoJyAgICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBh
cmFtZXRlck5hbWUpcyIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXQlKGZyYW1ld29ya1By
ZWZpeClzRW51bUNvbnN0YW50VmFsdWUob3V0XyUocGFyYW1ldGVyTmFtZSlzKSk7JyAlIHBhcmFt
X2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBw
ZW5kKCcgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShw
YXJhbWV0ZXJOYW1lKXMiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0JShmcmFtZXdvcmtQcmVm
aXgpc0VudW1Db25zdGFudFZhbHVlKG91dF8lKHBhcmFtZXRlck5hbWUpcykpOycgJSBwYXJhbV9h
cmdzKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJh
bWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhv
ZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgb3V0XyUocGFyYW1ldGVyTmFt
ZSlzKTsnICUgcGFyYW1fYXJncykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9o
ZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weQppbmRleCAzYzY2OWU2MjMw
ZjY5MTU3NzZkMzFjZDQyNTBhYjE5OTA5ZDZkYWU4Li5hNTY4MjBhN2MxNzk5YmQ4NmE1YWZlY2Rj
ZTkyYjk2MmYzY2UwZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpAQCAtNDksNyArNDksNyBAQCBj
bGFzcyBGcm9udGVuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKIAogICAg
IGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAgICAgICAgIGhlYWRlcnMgPSBbCi0gICAgICAg
ICAgICAnIkluc3BlY3RvciVzVHlwZUJ1aWxkZXJzLmgiJyAlIHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsuc2V0dGluZygncHJlZml4JyksCisgICAgICAgICAgICAnIkluc3BlY3RvciVzUHJvdG9jb2xU
eXBlcy5oIicgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpLAogICAg
ICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+JywKICAgICAg
ICAgICAgICc8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPicsCiAgICAgICAgICAgICAnPHd0
Zi9QYXNzUmVmUHRyLmg+JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4
IDY0ZTVhNjgzZmIyMWNhOTBhZjMzNDU0MmRkZDZiYjA3NmZjZjY1NzQuLmY1YTM1MmViNTU1NWM1
Y2M3OWNiOGZjZTc0YjJiOWNhOTFiYWIyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgIHBhcmFtZXRlcl92
YWx1ZSA9ICcqJyArIHBhcmFtZXRlcl92YWx1ZQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLnR5
cGUuaXNfZW51bSgpOgogICAgICAgICAgICAgICAgIGZyYW1ld29ya19wcmVmaXggPSBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpCi0gICAgICAgICAgICAgICAgcGFyYW1l
dGVyX3ZhbHVlID0gJ0luc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldCVzRW51bUNvbnN0YW50VmFs
dWUoJXMpJyAlIChmcmFtZXdvcmtfcHJlZml4LCBwYXJhbWV0ZXJfdmFsdWUpCisgICAgICAgICAg
ICAgICAgcGFyYW1ldGVyX3ZhbHVlID0gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OmdldCVzRW51bUNv
bnN0YW50VmFsdWUoJXMpJyAlIChmcmFtZXdvcmtfcHJlZml4LCBwYXJhbWV0ZXJfdmFsdWUpCiAK
ICAgICAgICAgICAgIHBhcmFtZXRlcl9hcmdzID0gewogICAgICAgICAgICAgICAgICdwYXJhbWV0
ZXJUeXBlJzogR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKHBh
cmFtZXRlciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9wcm90b2Nv
bF90eXBlc19oZWFkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2MDM5YzRkZmI2ZjFlZWMzZTMxYTA3MDdl
ODhhY2IwMjE2MmIzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hlYWRlci5w
eQpAQCAtMCwwICsxLDM0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAoYykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
YykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQor
Citmcm9tIGdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yLCB1Y2ZpcnN0Citmcm9tIGdlbmVyYXRv
cl90ZW1wbGF0ZXMgaW1wb3J0IEdlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKK2Zyb20g
bW9kZWxzIGltcG9ydCBFbnVtVHlwZSwgT2JqZWN0VHlwZSwgUHJpbWl0aXZlVHlwZSwgQWxpYXNl
ZFR5cGUsIEFycmF5VHlwZSwgRnJhbWV3b3JrcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcign
Z2xvYmFsJykKKworCitjbGFzcyBQcm90b2NvbFR5cGVzSGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRv
cik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCk6CisgICAg
ICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpCisKKyAg
ICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIkluc3BlY3RvciVz
UHJvdG9jb2xUeXBlcy5oIiAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4
JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGRvbWFpbnMgPSBz
ZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKQorICAgICAgICBzZWxmLmNhbGN1bGF0ZV90eXBlc19y
ZXF1aXJpbmdfc2hhcGVfYXNzZXJ0aW9ucyhkb21haW5zKQorCisgICAgICAgIGhlYWRlcnMgPSBz
ZXQoWworICAgICAgICAgICAgJzxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oPics
CisgICAgICAgICAgICAnPHd0Zi9Bc3NlcnRpb25zLmg+JywKKyAgICAgICAgICAgICc8d3RmL1Bh
c3NSZWZQdHIuaD4nCisgICAgICAgIF0pCisKKyAgICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1l
d29yayBpcyBub3QgRnJhbWV3b3Jrcy5KYXZhU2NyaXB0Q29yZToKKyAgICAgICAgICAgIGhlYWRl
cnMuYWRkKCc8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPicpCisKKyAgICAg
ICAgZXhwb3J0X21hY3JvID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdleHBvcnRf
bWFjcm8nLCBOb25lKQorICAgICAgICBmcmFtZXdvcmtfcHJlZml4ID0gc2VsZi5tb2RlbCgpLmZy
YW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKQorCisgICAgICAgIGhlYWRlcl9hcmdzID0geworICAg
ICAgICAgICAgJ2hlYWRlckd1YXJkU3RyaW5nJzogcmUuc3ViKCdcVysnLCAnXycsIHNlbGYub3V0
cHV0X2ZpbGVuYW1lKCkpLAorICAgICAgICAgICAgJ2luY2x1ZGVzJzogJ1xuJy5qb2luKFsnI2lu
Y2x1ZGUgJyArIGhlYWRlciBmb3IgaGVhZGVyIGluIHNvcnRlZChoZWFkZXJzKV0pLAorICAgICAg
ICAgICAgJ3R5cGVkZWZzJzogJycsCisgICAgICAgICAgICAnaW5wdXRGaWxlbmFtZSc6IHNlbGYu
X2lucHV0X2ZpbGVwYXRoCisgICAgICAgIH0KKworICAgICAgICByZXR1cm5fdHlwZSA9ICdTdHJp
bmcnCisgICAgICAgIHJldHVybl90eXBlX3dpdGhfZXhwb3J0X21hY3JvID0gW3JldHVybl90eXBl
XQorICAgICAgICBpZiBleHBvcnRfbWFjcm8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1
cm5fdHlwZV93aXRoX2V4cG9ydF9tYWNyb1s6MF0gPSBbZXhwb3J0X21hY3JvXQorCisgICAgICAg
IHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGlj
ZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNwcEhl
YWRlclByZWx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZCgnbmFtZXNwYWNlIFByb3RvY29sIHsnKQorICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoc2VsZi5fZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoZG9tYWlucykpCisgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV90eXBlZGVmcyhkb21haW5zKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKCclcyBnZXQlc0VudW1Db25zdGFudFZhbHVlKGludCBjb2Rl
KTsnICUgKCcgJy5qb2luKHJldHVybl90eXBlX3dpdGhfZXhwb3J0X21hY3JvKSwgZnJhbWV3b3Jr
X3ByZWZpeCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4oWworICAgICAgICAg
ICAgJ3RlbXBsYXRlPHR5cGVuYW1lIFQ+ICVzIGdldCVzRW51bUNvbnN0YW50VmFsdWUoVCBlbnVt
VmFsdWUpJyAlIChyZXR1cm5fdHlwZSwgZnJhbWV3b3JrX3ByZWZpeCksCisgICAgICAgICAgICAn
eycsCisgICAgICAgICAgICAnICAgIHJldHVybiBnZXQlc0VudW1Db25zdGFudFZhbHVlKHN0YXRp
Y19jYXN0PGludD4oZW51bVZhbHVlKSk7JyAlIGZyYW1ld29ya19wcmVmaXgsCisgICAgICAgICAg
ICAnfSddKSkKKworICAgICAgICBidWlsZGVyX3NlY3Rpb25zID0gbWFwKHNlbGYuX2dlbmVyYXRl
X2J1aWxkZXJzX2Zvcl9kb21haW4sIGRvbWFpbnMpCisgICAgICAgIHNlY3Rpb25zLmV4dGVuZChm
aWx0ZXIobGFtYmRhIHNlY3Rpb246IGxlbihzZWN0aW9uKSA+IDAsIGJ1aWxkZXJfc2VjdGlvbnMp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJh
dGlvbnNfZm9yX2JpbmRpbmdfdHJhaXRzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnfSAv
LyBuYW1lc3BhY2UgUHJvdG9jb2wnKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUo
VGVtcGxhdGVzLkNwcEhlYWRlclBvc3RsdWRlKS5zdWJzdGl0dXRlKE5vbmUsICoqaGVhZGVyX2Fy
Z3MpKQorICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICAjIFByaXZh
dGUgbWV0aG9kcy4KKworICAgICMgRklYTUU6IG1vdmUgYnVpbGRlcnMgb3V0IG9mIGNsYXNzZXMs
IHVuY29tbWVudCBmb3J3YXJkIGRlY2xhcmF0aW9uCisKKyAgICBkZWYgX2dlbmVyYXRlX2Zvcndh
cmRfZGVjbGFyYXRpb25zKHNlbGYsIGRvbWFpbnMpOgorICAgICAgICBzZWN0aW9ucyA9IFtdCisK
KyAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgorICAgICAgICAgICAgZGVjbGFyYXRpb25f
dHlwZXMgPSBbZGVjbC50eXBlIGZvciBkZWNsIGluIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9uc10K
KyAgICAgICAgICAgIG9iamVjdF90eXBlcyA9IGZpbHRlcihsYW1iZGEgX3R5cGU6IGlzaW5zdGFu
Y2UoX3R5cGUsIE9iamVjdFR5cGUpLCBkZWNsYXJhdGlvbl90eXBlcykKKyAgICAgICAgICAgIGVu
dW1fdHlwZXMgPSBmaWx0ZXIobGFtYmRhIF90eXBlOiBpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlw
ZSksIGRlY2xhcmF0aW9uX3R5cGVzKQorICAgICAgICAgICAgaWYgbGVuKG9iamVjdF90eXBlcykg
KyBsZW4oZW51bV90eXBlcykgPT0gMDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICBkb21haW5fbGluZXMgPSBbXQorICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVu
ZCgnbmFtZXNwYWNlICVzIHsnICUgZG9tYWluLmRvbWFpbl9uYW1lKQorCisgICAgICAgICAgICBv
YmplY3RfdHlwZV9uYW1lcyA9IFtfdHlwZS5yYXdfbmFtZSgpIGZvciBfdHlwZSBpbiBvYmplY3Rf
dHlwZXNdCisgICAgICAgICAgICBlbnVtX3R5cGVfbmFtZXMgPSBbX3R5cGUucmF3X25hbWUoKSBm
b3IgX3R5cGUgaW4gZW51bV90eXBlc10KKworICAgICAgICAgICAgIyBGb3J3YXJkLWRlY2xhcmUg
YWxsIGNsYXNzZXMgc28gdGhlIHR5cGUgYnVpbGRlcnMgd29uJ3QgYnJlYWsgaWYgcmVhcnJhbmdl
ZC4KKyAgICAgICAgICAgIGRvbWFpbl9saW5lcy5leHRlbmQoJ2NsYXNzICVzOycgJSBuYW1lIGZv
ciBuYW1lIGluIHNvcnRlZChvYmplY3RfdHlwZV9uYW1lcykpCisgICAgICAgICAgICBkb21haW5f
bGluZXMuZXh0ZW5kKCdlbnVtIGNsYXNzICVzOycgJSBuYW1lIGZvciBuYW1lIGluIHNvcnRlZChl
bnVtX3R5cGVfbmFtZXMpKQorICAgICAgICAgICAgZG9tYWluX2xpbmVzLmFwcGVuZCgnfSAvLyAl
cycgJSBkb21haW4uZG9tYWluX25hbWUpCisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoR2Vu
ZXJhdG9yLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ1xuJy5qb2luKGRvbWFp
bl9saW5lcykpKQorCisgICAgICAgIGlmIGxlbihzZWN0aW9ucykgPT0gMDoKKyAgICAgICAgICAg
IHJldHVybiAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICIiIi8vIEZvcndh
cmQgZGVjbGFyYXRpb25zLgorJXMKKy8vIEVuZCBvZiBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KKyIi
IiAlICdcblxuJy5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIF9nZW5lcmF0ZV90eXBlZGVmcyhz
ZWxmLCBkb21haW5zKToKKyAgICAgICAgc2VjdGlvbnMgPSBtYXAoc2VsZi5fZ2VuZXJhdGVfdHlw
ZWRlZnNfZm9yX2RvbWFpbiwgZG9tYWlucykKKyAgICAgICAgc2VjdGlvbnMgPSBmaWx0ZXIobGFt
YmRhIHRleHQ6IGxlbih0ZXh0KSA+IDAsIHNlY3Rpb25zKQorCisgICAgICAgIGlmIGxlbihzZWN0
aW9ucykgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmV0dXJuICIiIi8vIFR5cGVkZWZzLgorJXMKKy8vIEVuZCBvZiB0eXBlZGVmcy4iIiIg
JSAnXG5cbicuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBfZ2VuZXJhdGVfdHlwZWRlZnNfZm9y
X2RvbWFpbihzZWxmLCBkb21haW4pOgorICAgICAgICBwcmltaXRpdmVfZGVjbGFyYXRpb25zID0g
ZmlsdGVyKGxhbWJkYSBkZWNsOiBpc2luc3RhbmNlKGRlY2wudHlwZSwgQWxpYXNlZFR5cGUpLCBk
b21haW4udHlwZV9kZWNsYXJhdGlvbnMpCisgICAgICAgIGlmIGxlbihwcmltaXRpdmVfZGVjbGFy
YXRpb25zKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuICcnCisKKyAgICAgICAgc2VjdGlvbnMg
PSBbXQorICAgICAgICBmb3IgZGVjbGFyYXRpb24gaW4gcHJpbWl0aXZlX2RlY2xhcmF0aW9uczoK
KyAgICAgICAgICAgIHByaW1pdGl2ZV9uYW1lID0gR2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmlt
aXRpdmVfdHlwZShkZWNsYXJhdGlvbi50eXBlLmFsaWFzZWRfdHlwZSkKKyAgICAgICAgICAgIHR5
cGVkZWZfbGluZXMgPSBbXQorICAgICAgICAgICAgaWYgbGVuKGRlY2xhcmF0aW9uLmRlc2NyaXB0
aW9uKSA+IDA6CisgICAgICAgICAgICAgICAgdHlwZWRlZl9saW5lcy5hcHBlbmQoJy8qICVzICov
JyAlIGRlY2xhcmF0aW9uLmRlc2NyaXB0aW9uKQorICAgICAgICAgICAgdHlwZWRlZl9saW5lcy5h
cHBlbmQoJ3R5cGVkZWYgJXMgJXM7JyAlIChwcmltaXRpdmVfbmFtZSwgZGVjbGFyYXRpb24udHlw
ZV9uYW1lKSkKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4odHlwZWRlZl9s
aW5lcykpCisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJ25hbWVz
cGFjZSAlcyB7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdc
blxuJy5qb2luKHNlY3Rpb25zKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9IC8vICVzJyAlIGRv
bWFpbi5kb21haW5fbmFtZSkKKyAgICAgICAgcmV0dXJuIEdlbmVyYXRvci53cmFwX3dpdGhfZ3Vh
cmRfZm9yX2RvbWFpbihkb21haW4sICdcbicuam9pbihsaW5lcykpCisKKyAgICBkZWYgX2dlbmVy
YXRlX2J1aWxkZXJzX2Zvcl9kb21haW4oc2VsZiwgZG9tYWluKToKKyAgICAgICAgc2VjdGlvbnMg
PSBbXQorCisgICAgICAgIGZvciB0eXBlX2RlY2xhcmF0aW9uIGluIGRvbWFpbi50eXBlX2RlY2xh
cmF0aW9uczoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9kZWNsYXJhdGlvbi50eXBl
LCBFbnVtVHlwZSk6CisgICAgICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVy
YXRlX3N0cnVjdF9mb3JfZW51bV9kZWNsYXJhdGlvbih0eXBlX2RlY2xhcmF0aW9uKSkKKyAgICAg
ICAgICAgIGVsaWYgaXNpbnN0YW5jZSh0eXBlX2RlY2xhcmF0aW9uLnR5cGUsIE9iamVjdFR5cGUp
OgorICAgICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9jbGFzc19m
b3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHR5cGVfZGVjbGFyYXRpb24sIGRvbWFpbikpCisKKyAgICAg
ICAgc2VjdGlvbnMgPSBmaWx0ZXIobGFtYmRhIHNlY3Rpb246IGxlbihzZWN0aW9uKSA+IDAsIHNl
Y3Rpb25zKQorICAgICAgICBpZiBsZW4oc2VjdGlvbnMpID09IDA6CisgICAgICAgICAgICByZXR1
cm4gJycKKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnbmFtZXNw
YWNlICVzIHsnICUgZG9tYWluLmRvbWFpbl9uYW1lKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ1xu
Jy5qb2luKHNlY3Rpb25zKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9IC8vICVzJyAlIGRvbWFp
bi5kb21haW5fbmFtZSkKKyAgICAgICAgcmV0dXJuIEdlbmVyYXRvci53cmFwX3dpdGhfZ3VhcmRf
Zm9yX2RvbWFpbihkb21haW4sICdcbicuam9pbihsaW5lcykpCisKKyAgICBkZWYgX2dlbmVyYXRl
X2NsYXNzX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24oc2VsZiwgdHlwZV9kZWNsYXJhdGlvbiwgZG9t
YWluKToKKyAgICAgICAgaWYgbGVuKHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKSA9PSAw
OgorICAgICAgICAgICAgcmV0dXJuICcnCisKKyAgICAgICAgZW51bV9tZW1iZXJzID0gZmlsdGVy
KGxhbWJkYSBtZW1iZXI6IGlzaW5zdGFuY2UobWVtYmVyLnR5cGUsIEVudW1UeXBlKSBhbmQgbWVt
YmVyLnR5cGUuaXNfYW5vbnltb3VzLCB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKKyAg
ICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVtYmVy
LmlzX29wdGlvbmFsLCB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKKyAgICAgICAgb3B0
aW9uYWxfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBtZW1iZXIuaXNfb3B0aW9uYWws
IHR5cGVfZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQorICAgICAgICBvYmplY3RfbmFtZSA9IHR5
cGVfZGVjbGFyYXRpb24udHlwZV9uYW1lCisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBp
ZiBsZW4odHlwZV9kZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikgPiAwOgorICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcvKiAlcyAqLycgJSB0eXBlX2RlY2xhcmF0aW9uLmRlc2NyaXB0aW9uKQorICAg
ICAgICBiYXNlX2NsYXNzID0gJ0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JworICAgICAgICBp
ZiBub3QgR2VuZXJhdG9yLnR5cGVfaGFzX29wZW5fZmllbGRzKHR5cGVfZGVjbGFyYXRpb24udHlw
ZSk6CisgICAgICAgICAgICBiYXNlX2NsYXNzID0gYmFzZV9jbGFzcyArICdCYXNlJworICAgICAg
ICBsaW5lcy5hcHBlbmQoJ2NsYXNzICVzIDogcHVibGljICVzIHsnICUgKG9iamVjdF9uYW1lLCBi
YXNlX2NsYXNzKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdwdWJsaWM6JykKKyAgICAgICAgZm9y
IGVudW1fbWVtYmVyIGluIGVudW1fbWVtYmVyczoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
ICAgIC8vIE5hbWVkIGFmdGVyIHByb3BlcnR5IG5hbWUgXCclc1wnIHdoaWxlIGdlbmVyYXRpbmcg
JXMuJyAlIChlbnVtX21lbWJlci5tZW1iZXJfbmFtZSwgb2JqZWN0X25hbWUpKQorICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX3N0cnVjdF9mb3JfYW5vbnltb3VzX2VudW1f
bWVtYmVyKGVudW1fbWVtYmVyKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRl
X2J1aWxkZXJfc3RhdGVfZW51bSh0eXBlX2RlY2xhcmF0aW9uKSkKKworICAgICAgICBjb25zdHJ1
Y3Rvcl9leGFtcGxlID0gW10KKyAgICAgICAgY29uc3RydWN0b3JfZXhhbXBsZS5hcHBlbmQoJyAg
ICAgKiBSZWZQdHI8JXM+IHJlc3VsdCA9ICVzOjpjcmVhdGUoKScgJSAob2JqZWN0X25hbWUsIG9i
amVjdF9uYW1lKSkKKyAgICAgICAgZm9yIG1lbWJlciBpbiByZXF1aXJlZF9tZW1iZXJzOgorICAg
ICAgICAgICAgY29uc3RydWN0b3JfZXhhbXBsZS5hcHBlbmQoJyAgICAgKiAgICAgLnNldCVzKC4u
LiknICUgdWNmaXJzdChtZW1iZXIubWVtYmVyX25hbWUpKQorCisgICAgICAgIGJ1aWxkZXJfYXJn
cyA9IHsKKyAgICAgICAgICAgICdvYmplY3RUeXBlJzogb2JqZWN0X25hbWUsCisgICAgICAgICAg
ICAnY29uc3RydWN0b3JFeGFtcGxlJzogJ1xuJy5qb2luKGNvbnN0cnVjdG9yX2V4YW1wbGUpICsg
JzsnLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5Qcm90b2NvbE9iamVjdEJ1aWxkZXJEZWNsYXJhdGlvblByZWx1ZGUpLnN1YnN0aXR1dGUoTm9u
ZSwgKipidWlsZGVyX2FyZ3MpKQorICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gcmVxdWlyZWRf
bWVtYmVyczoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9idWlsZGVy
X3NldHRlcl9mb3JfbWVtYmVyKHR5cGVfbWVtYmVyLCBkb21haW4pKQorICAgICAgICBsaW5lcy5h
cHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlByb3RvY29sT2JqZWN0QnVpbGRlckRlY2xhcmF0aW9u
UG9zdGx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipidWlsZGVyX2FyZ3MpKQorICAgICAgICBmb3Ig
bWVtYmVyIGluIG9wdGlvbmFsX21lbWJlcnM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2Vs
Zi5fZ2VuZXJhdGVfdW5jaGVja2VkX3NldHRlcl9mb3JfbWVtYmVyKG1lbWJlciwgZG9tYWluKSkK
KworICAgICAgICBpZiBHZW5lcmF0b3IudHlwZV9oYXNfb3Blbl9maWVsZHModHlwZV9kZWNsYXJh
dGlvbi50eXBlKToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIC8vIFByb3BlcnR5IG5hbWVzIGZvciB0eXBlIGdlbmVyYXRlZCBhcyBv
cGVuLicpCisgICAgICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gdHlwZV9kZWNsYXJhdGlvbi50
eXBlX21lbWJlcnM6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgc3RhdGljIGNv
bnN0IGNoYXIqICVzOycgJSB1Y2ZpcnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lKSkKKworICAg
ICAgICBsaW5lcy5hcHBlbmQoJ307JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcnKQorICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV9zdHJ1Y3RfZm9y
X2VudW1fZGVjbGFyYXRpb24oc2VsZiwgZW51bV9kZWNsYXJhdGlvbik6CisgICAgICAgIGxpbmVz
ID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBlbnVtX2RlY2xhcmF0aW9u
LmRlc2NyaXB0aW9uKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5fZ2VuZXJhdGVfc3RydWN0
X2Zvcl9lbnVtX3R5cGUoZW51bV9kZWNsYXJhdGlvbi50eXBlX25hbWUsIGVudW1fZGVjbGFyYXRp
b24udHlwZSkpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgX2dl
bmVyYXRlX3N0cnVjdF9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKHNlbGYsIGVudW1fbWVtYmVy
KToKKyAgICAgICAgZGVmIGFwcGx5X2luZGVudGF0aW9uKGxpbmUpOgorICAgICAgICAgICAgaWYg
bGluZS5zdGFydHN3aXRoKCgnIycsICcvKicsICcqLycsICcvLycpKSBvciBsZW4obGluZSkgaXMg
MDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGluZQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gJyAgICAnICsgbGluZQorCisgICAgICAgIGluZGVudGVkX2xpbmVz
ID0gbWFwKGFwcGx5X2luZGVudGF0aW9uLCBzZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9yX2VudW1f
dHlwZShlbnVtX21lbWJlci5tZW1iZXJfbmFtZSwgZW51bV9tZW1iZXIudHlwZSkpCisgICAgICAg
IHJldHVybiAnXG4nLmpvaW4oaW5kZW50ZWRfbGluZXMpCisKKyAgICBkZWYgX2dlbmVyYXRlX3N0
cnVjdF9mb3JfZW51bV90eXBlKHNlbGYsIGVudW1fbmFtZSwgZW51bV90eXBlKToKKyAgICAgICAg
bGluZXMgPSBbXQorICAgICAgICBlbnVtX25hbWUgPSB1Y2ZpcnN0KGVudW1fbmFtZSkKKyAgICAg
ICAgbGluZXMuYXBwZW5kKCdlbnVtIGNsYXNzICVzIHsnICUgZW51bV9uYW1lKQorICAgICAgICBm
b3IgZW51bV92YWx1ZSBpbiBlbnVtX3R5cGUuZW51bV92YWx1ZXMoKToKKyAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgICVzID0gJXMsJyAlIChHZW5lcmF0b3Iuc3R5bGl6ZWRfbmFtZV9mb3Jf
ZW51bV92YWx1ZShlbnVtX3ZhbHVlKSwgc2VsZi5lbmNvZGluZ19mb3JfZW51bV92YWx1ZShlbnVt
X3ZhbHVlKSkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfTsgLy8gZW51bSBjbGFzcyAlcycgJSBl
bnVtX25hbWUpCisgICAgICAgIHJldHVybiBsaW5lcyAgIyBUaGUgY2FsbGVyIG1heSB3YW50IHRv
IGFkanVzdCBpbmRlbnRhdGlvbiwgc28gZG9uJ3Qgam9pbiB0aGVzZSBsaW5lcy4KKworICAgIGRl
ZiBfZ2VuZXJhdGVfYnVpbGRlcl9zdGF0ZV9lbnVtKHNlbGYsIHR5cGVfZGVjbGFyYXRpb24pOgor
ICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0ZXIobGFt
YmRhIG1lbWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwgdHlwZV9kZWNsYXJhdGlvbi50eXBl
X21lbWJlcnMpCisgICAgICAgIGVudW1fdmFsdWVzID0gW10KKworICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBlbnVtIHsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgTm9GaWVsZHNT
ZXQgPSAwLCcpCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihyZXF1aXJlZF9tZW1iZXJzKSk6
CisgICAgICAgICAgICBlbnVtX3ZhbHVlID0gIiVzU2V0IiAlIHVjZmlyc3QocmVxdWlyZWRfbWVt
YmVyc1tpXS5tZW1iZXJfbmFtZSkKKyAgICAgICAgICAgIGVudW1fdmFsdWVzLmFwcGVuZChlbnVt
X3ZhbHVlKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICVzID0gMSA8PCAlZCwn
ICUgKGVudW1fdmFsdWUsIGkpKQorICAgICAgICBpZiBsZW4oZW51bV92YWx1ZXMpID4gMDoKKyAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBBbGxGaWVsZHNTZXQgPSAoJXMpJyAlICcg
fCAnLmpvaW4oZW51bV92YWx1ZXMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgICAgIEFsbEZpZWxkc1NldCA9IDAnKQorICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICB9OycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgcmV0dXJuICdcbicu
am9pbihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfYnVpbGRlcl9zZXR0ZXJfZm9yX21lbWJl
cihzZWxmLCB0eXBlX21lbWJlciwgZG9tYWluKToKKyAgICAgICAgc2V0dGVyX2FyZ3MgPSB7Cisg
ICAgICAgICAgICAnY2FtZWxOYW1lJzogdWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJfbmFtZSks
CisgICAgICAgICAgICAnZnJhbWV3b3JrUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5z
ZXR0aW5nKCdwcmVmaXgnKSwKKyAgICAgICAgICAgICdrZXllZFNldCc6IEdlbmVyYXRvci5rZXll
ZF9zZXRfbWV0aG9kX2Zvcl90eXBlKHR5cGVfbWVtYmVyLnR5cGUpLAorICAgICAgICAgICAgJ25h
bWUnOiB0eXBlX21lbWJlci5tZW1iZXJfbmFtZSwKKyAgICAgICAgICAgICdwYXJhbWV0ZXJUeXBl
JzogR2VuZXJhdG9yLnR5cGVfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlcikKKyAg
ICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcnKQor
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgQnVpbGRlcjxTVEFURSB8ICUoY2FtZWxOYW1l
KXNTZXQ+JiBzZXQlKGNhbWVsTmFtZSlzKCUocGFyYW1ldGVyVHlwZSlzIHZhbHVlKScgJSBzZXR0
ZXJfYXJncykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHsnKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiAlKGNhbWVsTmFt
ZSlzU2V0KSwgcHJvcGVydHlfJShuYW1lKXNfYWxyZWFkeV9zZXQpOycgJSBzZXR0ZXJfYXJncykK
KworICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5cGUsIEVudW1UeXBlKToKKyAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgbV9yZXN1bHQtPiUoa2V5ZWRTZXQp
cyhBU0NJSUxpdGVyYWwoIiUobmFtZSlzIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldCUoZnJh
bWV3b3JrUHJlZml4KXNFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkp
OycgJSBzZXR0ZXJfYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgICAgICAgICAgbV9yZXN1bHQtPiUoa2V5ZWRTZXQpcyhBU0NJSUxpdGVyYWwoIiUobmFt
ZSlzIiksIHZhbHVlKTsnICUgc2V0dGVyX2FyZ3MpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
ICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTwlKGNhbWVsTmFtZSlzU2V0PigpOycgJSBzZXR0ZXJf
YXJncykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIH0nKQorICAgICAgICByZXR1cm4g
J1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIF9nZW5lcmF0ZV91bmNoZWNrZWRfc2V0dGVyX2Zv
cl9tZW1iZXIoc2VsZiwgdHlwZV9tZW1iZXIsIGRvbWFpbik6CisgICAgICAgIHNldHRlcl9hcmdz
ID0geworICAgICAgICAgICAgJ2NhbWVsTmFtZSc6IHVjZmlyc3QodHlwZV9tZW1iZXIubWVtYmVy
X25hbWUpLAorICAgICAgICAgICAgJ2ZyYW1ld29ya1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFt
ZXdvcmsuc2V0dGluZygncHJlZml4JyksCisgICAgICAgICAgICAna2V5ZWRTZXQnOiBHZW5lcmF0
b3Iua2V5ZWRfc2V0X21ldGhvZF9mb3JfdHlwZSh0eXBlX21lbWJlci50eXBlKSwKKyAgICAgICAg
ICAgICduYW1lJzogdHlwZV9tZW1iZXIubWVtYmVyX25hbWUsCisgICAgICAgICAgICAncGFyYW1l
dGVyVHlwZSc6IEdlbmVyYXRvci50eXBlX3N0cmluZ19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1i
ZXIpCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgnJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgdm9pZCBzZXQlKGNhbWVsTmFtZSlzKCUo
cGFyYW1ldGVyVHlwZSlzIHZhbHVlKScgJSBzZXR0ZXJfYXJncykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgeycpCisgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9tZW1iZXIudHlwZSwgRW51
bVR5cGUpOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIEluc3BlY3Rvck9iamVj
dEJhc2U6OiUoa2V5ZWRTZXQpcyhBU0NJSUxpdGVyYWwoIiUobmFtZSlzIiksIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OmdldCUoZnJhbWV3b3JrUHJlZml4KXNFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNf
Y2FzdDxpbnQ+KHZhbHVlKSkpOycgJSBzZXR0ZXJfYXJncykKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjolKGtleWVk
U2V0KXMoQVNDSUlMaXRlcmFsKCIlKG5hbWUpcyIpLCB2YWx1ZSk7JyAlIHNldHRlcl9hcmdzKQor
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihs
aW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnNfZm9yX2JpbmRp
bmdfdHJhaXRzKHNlbGYpOgorICAgICAgICAjIEEgbGlzdCBvZiAoYnVpbGRlcl90eXBlLCBuZWVk
c19ydW50aW1lX2Nhc3QpCisgICAgICAgIHR5cGVfYXJndW1lbnRzID0gW10KKworICAgICAgICBm
b3IgZG9tYWluIGluIHNlbGYuZG9tYWluc190b19nZW5lcmF0ZSgpOgorICAgICAgICAgICAgZGVj
bGFyYXRpb25zX3RvX2dlbmVyYXRlID0gZmlsdGVyKGxhbWJkYSBkZWNsOiBzZWxmLnR5cGVfbmVl
ZHNfc2hhcGVfYXNzZXJ0aW9ucyhkZWNsLnR5cGUpLCBkb21haW4udHlwZV9kZWNsYXJhdGlvbnMp
CisKKyAgICAgICAgICAgIGZvciB0eXBlX2RlY2xhcmF0aW9uIGluIGRlY2xhcmF0aW9uc190b19n
ZW5lcmF0ZToKKyAgICAgICAgICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gdHlwZV9kZWNsYXJh
dGlvbi50eXBlX21lbWJlcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlw
ZV9tZW1iZXIudHlwZSwgRW51bVR5cGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9h
cmd1bWVudHMuYXBwZW5kKChHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGVf
bWVtYmVyKHR5cGVfbWVtYmVyLCB0eXBlX2RlY2xhcmF0aW9uKSwgRmFsc2UpKQorCisgICAgICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX2RlY2xhcmF0aW9uLnR5cGUsIE9iamVjdFR5cGUp
OgorICAgICAgICAgICAgICAgICAgICB0eXBlX2FyZ3VtZW50cy5hcHBlbmQoKEdlbmVyYXRvci5w
cm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZSh0eXBlX2RlY2xhcmF0aW9uLnR5cGUpLCBHZW5l
cmF0b3IudHlwZV9uZWVkc19ydW50aW1lX2Nhc3RzKHR5cGVfZGVjbGFyYXRpb24udHlwZSkpKQor
CisgICAgICAgIHN0cnVjdF9rZXl3b3JkcyA9IFsnc3RydWN0J10KKyAgICAgICAgZnVuY3Rpb25f
a2V5d29yZHMgPSBbJ3N0YXRpYyB2b2lkJ10KKyAgICAgICAgZXhwb3J0X21hY3JvID0gc2VsZi5t
b2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdleHBvcnRfbWFjcm8nLCBOb25lKQorICAgICAgICBp
ZiBleHBvcnRfbWFjcm8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdHJ1Y3Rfa2V5d29yZHMu
YXBwZW5kKGV4cG9ydF9tYWNybykKKyAgICAgICAgICAgICNmdW5jdGlvbl9rZXl3b3Jkc1sxOjFd
ID0gW2V4cG9ydF9tYWNyb10KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciBhcmd1
bWVudCBpbiB0eXBlX2FyZ3VtZW50czoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgndGVtcGxh
dGU8PiAlcyBCaW5kaW5nVHJhaXRzPCVzPiB7JyAlICgnICcuam9pbihzdHJ1Y3Rfa2V5d29yZHMp
LCBhcmd1bWVudFswXSkpCisgICAgICAgICAgICBpZiBhcmd1bWVudFsxXToKKyAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJ3N0YXRpYyBQYXNzUmVmUHRyPCVzPiBydW50aW1lQ2FzdChQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKTsnICUgYXJndW1lbnRbMF0p
CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJU0FCTEVEJykKKyAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnJXMgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSopOycgJSAnICcuam9pbihmdW5jdGlvbl9rZXl3b3JkcykpCisg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVEJykKKyAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnfTsnKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxp
bmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjdlOTMzYzM4YjY2ZGU4
ODFhYTYwMDliNGI4MTMwY2NlYzNjMjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfcHJvdG9jb2xfdHlw
ZXNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSwxODQgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRl
bXBsYXRlCisKK2Zyb20gZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIHVjZmlyc3QKK2Zyb20g
Z2VuZXJhdG9yX3RlbXBsYXRlcyBpbXBvcnQgR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRl
cworZnJvbSBtb2RlbHMgaW1wb3J0IEFsaWFzZWRUeXBlLCBBcnJheVR5cGUsIEVudW1UeXBlLCBP
YmplY3RUeXBlCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNz
IFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpOgorICAgICAgICBHZW5lcmF0
b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKQorCisgICAgZGVmIG91dHB1
dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICJJbnNwZWN0b3Ilc1Byb3RvY29sVHlw
ZXMuY3BwIiAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJlZml4JykKKworICAg
IGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGRvbWFpbnMgPSBzZWxmLmRvbWFp
bnNfdG9fZ2VuZXJhdGUoKQorICAgICAgICBzZWxmLmNhbGN1bGF0ZV90eXBlc19yZXF1aXJpbmdf
c2hhcGVfYXNzZXJ0aW9ucyhkb21haW5zKQorCisgICAgICAgIHNlY29uZGFyeV9oZWFkZXJzID0g
Wyc8d3RmL3RleHQvQ1N0cmluZy5oPiddCisKKyAgICAgICAgaGVhZGVyX2FyZ3MgPSB7CisgICAg
ICAgICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIkluc3BlY3RvciVzUHJvdG9jb2xUeXBlcy5oIicg
JSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpLAorICAgICAgICAgICAg
J3NlY29uZGFyeUluY2x1ZGVzJzogIlxuIi5qb2luKFsnI2luY2x1ZGUgJXMnICUgaGVhZGVyIGZv
ciBoZWFkZXIgaW4gc2Vjb25kYXJ5X2hlYWRlcnNdKSwKKyAgICAgICAgICAgICdpbnB1dEZpbGVu
YW1lJzogc2VsZi5faW5wdXRfZmlsZXBhdGgKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25z
ID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNwcEltcGxlbWVudGF0
aW9uUHJlbHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKCduYW1lc3BhY2UgUHJvdG9jb2wgeycpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX21hcHBpbmcoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKHNlbGYuX2dlbmVyYXRlX29wZW5fZmllbGRfbmFtZXMoKSkKKyAgICAgICAgYnVpbGRlcl9z
ZWN0aW9ucyA9IG1hcChzZWxmLl9nZW5lcmF0ZV9idWlsZGVyc19mb3JfZG9tYWluLCBkb21haW5z
KQorICAgICAgICBzZWN0aW9ucy5leHRlbmQoZmlsdGVyKGxhbWJkYSBzZWN0aW9uOiBsZW4oc2Vj
dGlvbikgPiAwLCBidWlsZGVyX3NlY3Rpb25zKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCd9
IC8vIG5hbWVzcGFjZSBQcm90b2NvbCcpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0
ZShUZW1wbGF0ZXMuQ3BwSW1wbGVtZW50YXRpb25Qb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAq
KmhlYWRlcl9hcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisK
KyAgICAjIFByaXZhdGUgbWV0aG9kcy4KKworICAgIGRlZiBfZ2VuZXJhdGVfZW51bV9tYXBwaW5n
KHNlbGYpOgorICAgICAgICBmcmFtZXdvcmtfcHJlZml4ID0gc2VsZi5tb2RlbCgpLmZyYW1ld29y
ay5zZXR0aW5nKCdwcmVmaXgnKQorICAgICAgICBsaW5lcyA9IFtdCisKKyAgICAgICAgbGluZXMu
YXBwZW5kKCdzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFudF92YWx1ZXNbXSA9
IHsnKQorICAgICAgICBsaW5lcy5leHRlbmQoWycgICAgIiVzIiwnICUgZW51bV92YWx1ZSBmb3Ig
ZW51bV92YWx1ZSBpbiBzZWxmLmFzc2lnbmVkX2VudW1fdmFsdWVzKCldKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJ307JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcnKQorICAgICAgICBsaW5lcy5h
cHBlbmQoJ1N0cmluZyBnZXQlc0VudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7JyAlIGZyYW1l
d29ya19wcmVmaXgpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJldHVybiBlbnVtX2NvbnN0
YW50X3ZhbHVlc1tjb2RlXTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQorCisgICAgICAg
IHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgX2dlbmVyYXRlX29wZW5fZmllbGRf
bmFtZXMoc2VsZik6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgZm9yIGRvbWFpbiBpbiBz
ZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKToKKyAgICAgICAgICAgIGZvciB0eXBlX2RlY2xhcmF0
aW9uIGluIGZpbHRlcihsYW1iZGEgZGVjbDogR2VuZXJhdG9yLnR5cGVfaGFzX29wZW5fZmllbGRz
KGRlY2wudHlwZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucyk6CisgICAgICAgICAgICAgICAg
Zm9yIHR5cGVfbWVtYmVyIGluIHNvcnRlZCh0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycywg
a2V5PWxhbWJkYSBtZW1iZXI6IG1lbWJlci5tZW1iZXJfbmFtZSk6CisgICAgICAgICAgICAgICAg
ICAgIGZpZWxkX25hbWUgPSAnOjonLmpvaW4oWydJbnNwZWN0b3InLCAnUHJvdG9jb2wnLCBkb21h
aW4uZG9tYWluX25hbWUsIHVjZmlyc3QodHlwZV9kZWNsYXJhdGlvbi50eXBlX25hbWUpLCB1Y2Zp
cnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lKV0pCisgICAgICAgICAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgnY29uc3QgY2hhciogJXMgPSAiJXMiOycgJSAoZmllbGRfbmFtZSwgdHlwZV9tZW1i
ZXIubWVtYmVyX25hbWUpKQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAg
ICBkZWYgX2dlbmVyYXRlX2J1aWxkZXJzX2Zvcl9kb21haW4oc2VsZiwgZG9tYWluKToKKyAgICAg
ICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBkZWNsYXJhdGlvbnNfdG9fZ2VuZXJhdGUgPSBmaWx0
ZXIobGFtYmRhIGRlY2w6IHNlbGYudHlwZV9uZWVkc19zaGFwZV9hc3NlcnRpb25zKGRlY2wudHlw
ZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucykKKworICAgICAgICBmb3IgdHlwZV9kZWNsYXJh
dGlvbiBpbiBkZWNsYXJhdGlvbnNfdG9fZ2VuZXJhdGU6CisgICAgICAgICAgICBmb3IgdHlwZV9t
ZW1iZXIgaW4gdHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnM6CisgICAgICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZSh0eXBlX21lbWJlci50eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX2VudW0o
dHlwZV9tZW1iZXIsIHR5cGVfZGVjbGFyYXRpb24pKQorCisgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKHR5cGVfZGVjbGFyYXRpb24udHlwZSwgT2JqZWN0VHlwZSk6CisgICAgICAgICAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2Fzc2VydGlvbl9mb3Jfb2JqZWN0X2RlY2xh
cmF0aW9uKHR5cGVfZGVjbGFyYXRpb24pKQorICAgICAgICAgICAgICAgIGlmIEdlbmVyYXRvci50
eXBlX25lZWRzX3J1bnRpbWVfY2FzdHModHlwZV9kZWNsYXJhdGlvbi50eXBlKToKKyAgICAgICAg
ICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX3J1bnRpbWVfY2FzdF9m
b3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHR5cGVfZGVjbGFyYXRpb24pKQorCisgICAgICAgIHJldHVy
biAnXG5cbicuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBfZ2VuZXJhdGVfcnVudGltZV9jYXN0
X2Zvcl9vYmplY3RfZGVjbGFyYXRpb24oc2VsZiwgb2JqZWN0X2RlY2xhcmF0aW9uKToKKyAgICAg
ICAgYXJncyA9IHsKKyAgICAgICAgICAgICdvYmplY3RUeXBlJzogR2VuZXJhdG9yLnByb3RvY29s
X3R5cGVfc3RyaW5nX2Zvcl90eXBlKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKQorICAgICAgICB9
CisgICAgICAgIHJldHVybiBUZW1wbGF0ZShUZW1wbGF0ZXMuUHJvdG9jb2xPYmplY3RSdW50aW1l
Q2FzdCkuc3Vic3RpdHV0ZShOb25lLCAqKmFyZ3MpCisKKyAgICBkZWYgX2dlbmVyYXRlX2Fzc2Vy
dGlvbl9mb3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHNlbGYsIG9iamVjdF9kZWNsYXJhdGlvbik6Cisg
ICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJl
ci5pc19vcHRpb25hbCwgb2JqZWN0X2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKKyAgICAgICAg
b3B0aW9uYWxfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBtZW1iZXIuaXNfb3B0aW9u
YWwsIG9iamVjdF9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCisgICAgICAgIHNob3VsZF9jb3Vu
dF9wcm9wZXJ0aWVzID0gbm90IEdlbmVyYXRvci50eXBlX2hhc19vcGVuX2ZpZWxkcyhvYmplY3Rf
ZGVjbGFyYXRpb24udHlwZSkKKyAgICAgICAgbGluZXMgPSBbXQorCisgICAgICAgIGxpbmVzLmFw
cGVuZCgnI2lmICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQg
QmluZGluZ1RyYWl0czwlcz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUqIHZhbHVlKScgJSAoR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5n
X2Zvcl90eXBlKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKSkpCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgiIiJ7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gb2JqZWN0OworICAgIGJvb2wgY2Fz
dFJlcyA9IHZhbHVlLT5hc09iamVjdCgmb2JqZWN0KTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhc3RS
ZXMsIGNhc3RSZXMpOyIiIikKKyAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHJlcXVpcmVkX21l
bWJlcnM6CisgICAgICAgICAgICBhcmdzID0geworICAgICAgICAgICAgICAgICdtZW1iZXJOYW1l
JzogdHlwZV9tZW1iZXIubWVtYmVyX25hbWUsCisgICAgICAgICAgICAgICAgJ2Fzc2VydE1ldGhv
ZCc6IEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJl
ciwgb2JqZWN0X2RlY2xhcmF0aW9uKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoIiIiICAgIHsKKyAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciAlKG1l
bWJlck5hbWUpc1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlz
IikpOworICAgICAgICBBU1NFUlQoJShtZW1iZXJOYW1lKXNQb3MgIT0gb2JqZWN0LT5lbmQoKSk7
CisgICAgICAgICUoYXNzZXJ0TWV0aG9kKXMoJShtZW1iZXJOYW1lKXNQb3MtPnZhbHVlLmdldCgp
KTsKKyAgICB9IiIiICUgYXJncykKKworICAgICAgICBpZiBzaG91bGRfY291bnRfcHJvcGVydGll
czoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9ICVzOycgJSBsZW4ocmVxdWlyZWRfbWVt
YmVycykpCisKKyAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIG9wdGlvbmFsX21lbWJlcnM6Cisg
ICAgICAgICAgICBhcmdzID0geworICAgICAgICAgICAgICAgICdtZW1iZXJOYW1lJzogdHlwZV9t
ZW1iZXIubWVtYmVyX25hbWUsCisgICAgICAgICAgICAgICAgJ2Fzc2VydE1ldGhvZCc6IEdlbmVy
YXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlciwgb2JqZWN0
X2RlY2xhcmF0aW9uKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
IiIiICAgIHsKKyAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciAlKG1lbWJlck5hbWUp
c1BvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIiUobWVtYmVyTmFtZSlzIikpOworICAg
ICAgICBpZiAoJShtZW1iZXJOYW1lKXNQb3MgIT0gb2JqZWN0LT5lbmQoKSkgeworICAgICAgICAg
ICAgJShhc3NlcnRNZXRob2QpcyglKG1lbWJlck5hbWUpc1Bvcy0+dmFsdWUuZ2V0KCkpOyIiIiAl
IGFyZ3MpCisKKyAgICAgICAgICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzOgorICAgICAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3Vu
dDsnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIH0nKQorICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgfScpCisKKyAgICAgICAgaWYgc2hvdWxkX2NvdW50X3Byb3BlcnRp
ZXM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291
bnQgIT0gb2JqZWN0LT5zaXplKCkpJykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAg
ICBGQVRBTCgiVW5leHBlY3RlZCBwcm9wZXJ0aWVzIGluIG9iamVjdDogJXNcXG4iLCBvYmplY3Qt
PnRvSlNPTlN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQo
J30nKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVEJykK
KyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfYXNz
ZXJ0aW9uX2Zvcl9lbnVtKHNlbGYsIGVudW1fbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pOgor
ICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnI2lmICFBU1NFUlRfRElT
QUJMRUQnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJXMoSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSogdmFsdWUpJyAlIEdlbmVyYXRvci5hc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21l
bWJlcihlbnVtX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKSkKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCd7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgU3RyaW5nIHM7JykKKyAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgYm9vbCBjYXN0X3JlcyA9IHZhbHVlLT5hc1N0cmluZygmcyk7JykK
KyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQVNTRVJUKGNhc3RfcmVzKTsnKQorCisgICAgICAg
IGFzc2VydF9jb25kaXRpb24gPSAnIHx8ICcuam9pbihbJ3MgPT0gIiVzIicgJSBlbnVtX3ZhbHVl
IGZvciBlbnVtX3ZhbHVlIGluIGVudW1fbWVtYmVyLnR5cGUuZW51bV92YWx1ZXMoKV0pCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVCglcyk7JyAlIGFzc2VydF9jb25kaXRpb24pCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQnKQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlmNjc2ZjZlNWIyODUzNDFhM2IxYTJk
NDcwMTU4MGEyN2U1MWZiZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzQ2ICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVy
c2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1p
bXBvcnQgc3RyaW5nCi1mcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKLQotZnJvbSBnZW5lcmF0
b3IgaW1wb3J0IEdlbmVyYXRvciwgdWNmaXJzdAotZnJvbSBnZW5lcmF0b3JfdGVtcGxhdGVzIGlt
cG9ydCBHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCi1mcm9tIG1vZGVscyBpbXBvcnQg
RW51bVR5cGUsIE9iamVjdFR5cGUsIFByaW1pdGl2ZVR5cGUsIEFsaWFzZWRUeXBlLCBBcnJheVR5
cGUsIEZyYW1ld29ya3MKLQotbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCi0KLQot
Y2xhc3MgVHlwZUJ1aWxkZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKToKLSAgICAgICAgR2VuZXJhdG9yLl9f
aW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKLQotICAgIGRlZiBvdXRwdXRfZmls
ZW5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAiSW5zcGVjdG9yJXNUeXBlQnVpbGRlcnMuaCIg
JSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpCi0KLSAgICBkZWYgZ2Vu
ZXJhdGVfb3V0cHV0KHNlbGYpOgotICAgICAgICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dl
bmVyYXRlKCkKLSAgICAgICAgc2VsZi5jYWxjdWxhdGVfdHlwZXNfcmVxdWlyaW5nX3NoYXBlX2Fz
c2VydGlvbnMoZG9tYWlucykKLQotICAgICAgICBoZWFkZXJzID0gc2V0KFsKLSAgICAgICAgICAg
ICc8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+JywKLSAgICAgICAgICAgICc8d3Rm
L0Fzc2VydGlvbnMuaD4nLAotICAgICAgICAgICAgJzx3dGYvUGFzc1JlZlB0ci5oPicKLSAgICAg
ICAgXSkKLQotICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIG5vdCBGcmFtZXdv
cmtzLkphdmFTY3JpcHRDb3JlOgotICAgICAgICAgICAgaGVhZGVycy5hZGQoJzxpbnNwZWN0b3Iv
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaD4nKQotCi0gICAgICAgIGV4cG9ydF9tYWNybyA9IHNl
bGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnZXhwb3J0X21hY3JvJywgTm9uZSkKLSAgICAg
ICAgZnJhbWV3b3JrX3ByZWZpeCA9IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygncHJl
Zml4JykKLQotICAgICAgICBoZWFkZXJfYXJncyA9IHsKLSAgICAgICAgICAgICdoZWFkZXJHdWFy
ZFN0cmluZyc6IHJlLnN1YignXFcrJywgJ18nLCBzZWxmLm91dHB1dF9maWxlbmFtZSgpKSwKLSAg
ICAgICAgICAgICdpbmNsdWRlcyc6ICdcbicuam9pbihbJyNpbmNsdWRlICcgKyBoZWFkZXIgZm9y
IGhlYWRlciBpbiBzb3J0ZWQoaGVhZGVycyldKSwKLSAgICAgICAgICAgICd0eXBlZGVmcyc6ICcn
LAotICAgICAgICAgICAgJ2lucHV0RmlsZW5hbWUnOiBzZWxmLl9pbnB1dF9maWxlcGF0aAotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuX3R5cGUgPSAnU3RyaW5nJwotICAgICAgICByZXR1cm5f
dHlwZV93aXRoX2V4cG9ydF9tYWNybyA9IFtyZXR1cm5fdHlwZV0KLSAgICAgICAgaWYgZXhwb3J0
X21hY3JvIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuX3R5cGVfd2l0aF9leHBvcnRf
bWFjcm9bOjBdID0gW2V4cG9ydF9tYWNyb10KLQotICAgICAgICBzZWN0aW9ucyA9IFtdCi0gICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKLSAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBIZWFkZXJQcmVsdWRlKS5zdWJzdGl0
dXRlKE5vbmUsICoqaGVhZGVyX2FyZ3MpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ25hbWVz
cGFjZSBUeXBlQnVpbGRlciB7JykKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVy
YXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKGRvbWFpbnMpKQotICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5fZ2VuZXJhdGVfdHlwZWRlZnMoZG9tYWlucykpCi0gICAgICAgIHNlY3Rpb25zLmFw
cGVuZCgnJXMgZ2V0JXNFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSk7JyAlICgnICcuam9pbihy
ZXR1cm5fdHlwZV93aXRoX2V4cG9ydF9tYWNybyksIGZyYW1ld29ya19wcmVmaXgpKQotICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoJ1xuJy5qb2luKFsKLSAgICAgICAgICAgICd0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAlcyBnZXQlc0VudW1Db25zdGFudFZhbHVlKFQgZW51bVZhbHVlKScgJSAocmV0dXJu
X3R5cGUsIGZyYW1ld29ya19wcmVmaXgpLAotICAgICAgICAgICAgJ3snLAotICAgICAgICAgICAg
JyAgICByZXR1cm4gZ2V0JXNFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGVudW1W
YWx1ZSkpOycgJSBmcmFtZXdvcmtfcHJlZml4LAotICAgICAgICAgICAgJ30nXSkpCi0KLSAgICAg
ICAgYnVpbGRlcl9zZWN0aW9ucyA9IG1hcChzZWxmLl9nZW5lcmF0ZV9idWlsZGVyc19mb3JfZG9t
YWluLCBkb21haW5zKQotICAgICAgICBzZWN0aW9ucy5leHRlbmQoZmlsdGVyKGxhbWJkYSBzZWN0
aW9uOiBsZW4oc2VjdGlvbikgPiAwLCBidWlsZGVyX3NlY3Rpb25zKSkKLSAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9iaW5kaW5n
X3RyYWl0cygpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ30gLy8gbmFtZXNwYWNlIFR5cGVC
dWlsZGVyJykKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5DcHBI
ZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKLSAgICAgICAg
cmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQotCi0gICAgIyBQcml2YXRlIG1ldGhvZHMuCi0K
LSAgICAjIEZJWE1FOiBtb3ZlIGJ1aWxkZXJzIG91dCBvZiBjbGFzc2VzLCB1bmNvbW1lbnQgZm9y
d2FyZCBkZWNsYXJhdGlvbgotCi0gICAgZGVmIF9nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9u
cyhzZWxmLCBkb21haW5zKToKLSAgICAgICAgc2VjdGlvbnMgPSBbXQotCi0gICAgICAgIGZvciBk
b21haW4gaW4gZG9tYWluczoKLSAgICAgICAgICAgIGRlY2xhcmF0aW9uX3R5cGVzID0gW2RlY2wu
dHlwZSBmb3IgZGVjbCBpbiBkb21haW4udHlwZV9kZWNsYXJhdGlvbnNdCi0gICAgICAgICAgICBv
YmplY3RfdHlwZXMgPSBmaWx0ZXIobGFtYmRhIF90eXBlOiBpc2luc3RhbmNlKF90eXBlLCBPYmpl
Y3RUeXBlKSwgZGVjbGFyYXRpb25fdHlwZXMpCi0gICAgICAgICAgICBlbnVtX3R5cGVzID0gZmls
dGVyKGxhbWJkYSBfdHlwZTogaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpLCBkZWNsYXJhdGlv
bl90eXBlcykKLSAgICAgICAgICAgIGlmIGxlbihvYmplY3RfdHlwZXMpICsgbGVuKGVudW1fdHlw
ZXMpID09IDA6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgZG9tYWlu
X2xpbmVzID0gW10KLSAgICAgICAgICAgIGRvbWFpbl9saW5lcy5hcHBlbmQoJ25hbWVzcGFjZSAl
cyB7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkKLQotICAgICAgICAgICAgb2JqZWN0X3R5cGVfbmFt
ZXMgPSBbX3R5cGUucmF3X25hbWUoKSBmb3IgX3R5cGUgaW4gb2JqZWN0X3R5cGVzXQotICAgICAg
ICAgICAgZW51bV90eXBlX25hbWVzID0gW190eXBlLnJhd19uYW1lKCkgZm9yIF90eXBlIGluIGVu
dW1fdHlwZXNdCi0KLSAgICAgICAgICAgICMgRm9yd2FyZC1kZWNsYXJlIGFsbCBjbGFzc2VzIHNv
IHRoZSB0eXBlIGJ1aWxkZXJzIHdvbid0IGJyZWFrIGlmIHJlYXJyYW5nZWQuCi0gICAgICAgICAg
ICBkb21haW5fbGluZXMuZXh0ZW5kKCdjbGFzcyAlczsnICUgbmFtZSBmb3IgbmFtZSBpbiBzb3J0
ZWQob2JqZWN0X3R5cGVfbmFtZXMpKQotICAgICAgICAgICAgZG9tYWluX2xpbmVzLmV4dGVuZCgn
ZW51bSBjbGFzcyAlczsnICUgbmFtZSBmb3IgbmFtZSBpbiBzb3J0ZWQoZW51bV90eXBlX25hbWVz
KSkKLSAgICAgICAgICAgIGRvbWFpbl9saW5lcy5hcHBlbmQoJ30gLy8gJXMnICUgZG9tYWluLmRv
bWFpbl9uYW1lKQotICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKEdlbmVyYXRvci53cmFwX3dp
dGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sICdcbicuam9pbihkb21haW5fbGluZXMpKSkKLQot
ICAgICAgICBpZiBsZW4oc2VjdGlvbnMpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiIiIvLyBGb3J3YXJkIGRlY2xhcmF0aW9u
cy4KLSVzCi0vLyBFbmQgb2YgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCi0iIiIgJSAnXG5cbicuam9p
bihzZWN0aW9ucykKLQotICAgIGRlZiBfZ2VuZXJhdGVfdHlwZWRlZnMoc2VsZiwgZG9tYWlucyk6
Ci0gICAgICAgIHNlY3Rpb25zID0gbWFwKHNlbGYuX2dlbmVyYXRlX3R5cGVkZWZzX2Zvcl9kb21h
aW4sIGRvbWFpbnMpCi0gICAgICAgIHNlY3Rpb25zID0gZmlsdGVyKGxhbWJkYSB0ZXh0OiBsZW4o
dGV4dCkgPiAwLCBzZWN0aW9ucykKLQotICAgICAgICBpZiBsZW4oc2VjdGlvbnMpID09IDA6Ci0g
ICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAi
IiIvLyBUeXBlZGVmcy4KLSVzCi0vLyBFbmQgb2YgdHlwZWRlZnMuIiIiICUgJ1xuXG4nLmpvaW4o
c2VjdGlvbnMpCi0KLSAgICBkZWYgX2dlbmVyYXRlX3R5cGVkZWZzX2Zvcl9kb21haW4oc2VsZiwg
ZG9tYWluKToKLSAgICAgICAgcHJpbWl0aXZlX2RlY2xhcmF0aW9ucyA9IGZpbHRlcihsYW1iZGEg
ZGVjbDogaXNpbnN0YW5jZShkZWNsLnR5cGUsIEFsaWFzZWRUeXBlKSwgZG9tYWluLnR5cGVfZGVj
bGFyYXRpb25zKQotICAgICAgICBpZiBsZW4ocHJpbWl0aXZlX2RlY2xhcmF0aW9ucykgPT0gMDoK
LSAgICAgICAgICAgIHJldHVybiAnJwotCi0gICAgICAgIHNlY3Rpb25zID0gW10KLSAgICAgICAg
Zm9yIGRlY2xhcmF0aW9uIGluIHByaW1pdGl2ZV9kZWNsYXJhdGlvbnM6Ci0gICAgICAgICAgICBw
cmltaXRpdmVfbmFtZSA9IEdlbmVyYXRvci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoZGVj
bGFyYXRpb24udHlwZS5hbGlhc2VkX3R5cGUpCi0gICAgICAgICAgICB0eXBlZGVmX2xpbmVzID0g
W10KLSAgICAgICAgICAgIGlmIGxlbihkZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikgPiAwOgotICAg
ICAgICAgICAgICAgIHR5cGVkZWZfbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBkZWNsYXJhdGlv
bi5kZXNjcmlwdGlvbikKLSAgICAgICAgICAgIHR5cGVkZWZfbGluZXMuYXBwZW5kKCd0eXBlZGVm
ICVzICVzOycgJSAocHJpbWl0aXZlX25hbWUsIGRlY2xhcmF0aW9uLnR5cGVfbmFtZSkpCi0gICAg
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoJ1xuJy5qb2luKHR5cGVkZWZfbGluZXMpKQotCi0gICAg
ICAgIGxpbmVzID0gW10KLSAgICAgICAgbGluZXMuYXBwZW5kKCduYW1lc3BhY2UgJXMgeycgJSBk
b21haW4uZG9tYWluX25hbWUpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnXG5cbicuam9pbihzZWN0
aW9ucykpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfSAvLyAlcycgJSBkb21haW4uZG9tYWluX25h
bWUpCi0gICAgICAgIHJldHVybiBHZW5lcmF0b3Iud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4o
ZG9tYWluLCAnXG4nLmpvaW4obGluZXMpKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9idWlsZGVyc19m
b3JfZG9tYWluKHNlbGYsIGRvbWFpbik6Ci0gICAgICAgIHNlY3Rpb25zID0gW10KLQotICAgICAg
ICBmb3IgdHlwZV9kZWNsYXJhdGlvbiBpbiBkb21haW4udHlwZV9kZWNsYXJhdGlvbnM6Ci0gICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfZGVjbGFyYXRpb24udHlwZSwgRW51bVR5cGUpOgot
ICAgICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9y
X2VudW1fZGVjbGFyYXRpb24odHlwZV9kZWNsYXJhdGlvbikpCi0gICAgICAgICAgICBlbGlmIGlz
aW5zdGFuY2UodHlwZV9kZWNsYXJhdGlvbi50eXBlLCBPYmplY3RUeXBlKToKLSAgICAgICAgICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfY2xhc3NfZm9yX29iamVjdF9kZWNs
YXJhdGlvbih0eXBlX2RlY2xhcmF0aW9uLCBkb21haW4pKQotCi0gICAgICAgIHNlY3Rpb25zID0g
ZmlsdGVyKGxhbWJkYSBzZWN0aW9uOiBsZW4oc2VjdGlvbikgPiAwLCBzZWN0aW9ucykKLSAgICAg
ICAgaWYgbGVuKHNlY3Rpb25zKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuICcnCi0KLSAgICAg
ICAgbGluZXMgPSBbXQotICAgICAgICBsaW5lcy5hcHBlbmQoJ25hbWVzcGFjZSAlcyB7JyAlIGRv
bWFpbi5kb21haW5fbmFtZSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCdcbicuam9pbihzZWN0aW9u
cykpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfSAvLyAlcycgJSBkb21haW4uZG9tYWluX25hbWUp
Ci0gICAgICAgIHJldHVybiBHZW5lcmF0b3Iud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4oZG9t
YWluLCAnXG4nLmpvaW4obGluZXMpKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9jbGFzc19mb3Jfb2Jq
ZWN0X2RlY2xhcmF0aW9uKHNlbGYsIHR5cGVfZGVjbGFyYXRpb24sIGRvbWFpbik6Ci0gICAgICAg
IGlmIGxlbih0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykgPT0gMDoKLSAgICAgICAgICAg
IHJldHVybiAnJwotCi0gICAgICAgIGVudW1fbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVy
OiBpc2luc3RhbmNlKG1lbWJlci50eXBlLCBFbnVtVHlwZSkgYW5kIG1lbWJlci50eXBlLmlzX2Fu
b255bW91cywgdHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCi0gICAgICAgIHJlcXVpcmVk
X21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwg
dHlwZV9kZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCi0gICAgICAgIG9wdGlvbmFsX21lbWJlcnMg
PSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbWVtYmVyLmlzX29wdGlvbmFsLCB0eXBlX2RlY2xhcmF0
aW9uLnR5cGVfbWVtYmVycykKLSAgICAgICAgb2JqZWN0X25hbWUgPSB0eXBlX2RlY2xhcmF0aW9u
LnR5cGVfbmFtZQotCi0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgaWYgbGVuKHR5cGVfZGVj
bGFyYXRpb24uZGVzY3JpcHRpb24pID4gMDoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnLyog
JXMgKi8nICUgdHlwZV9kZWNsYXJhdGlvbi5kZXNjcmlwdGlvbikKLSAgICAgICAgYmFzZV9jbGFz
cyA9ICdJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCcKLSAgICAgICAgaWYgbm90IEdlbmVyYXRv
ci50eXBlX2hhc19vcGVuX2ZpZWxkcyh0eXBlX2RlY2xhcmF0aW9uLnR5cGUpOgotICAgICAgICAg
ICAgYmFzZV9jbGFzcyA9IGJhc2VfY2xhc3MgKyAnQmFzZScKLSAgICAgICAgbGluZXMuYXBwZW5k
KCdjbGFzcyAlcyA6IHB1YmxpYyAlcyB7JyAlIChvYmplY3RfbmFtZSwgYmFzZV9jbGFzcykpCi0g
ICAgICAgIGxpbmVzLmFwcGVuZCgncHVibGljOicpCi0gICAgICAgIGZvciBlbnVtX21lbWJlciBp
biBlbnVtX21lbWJlcnM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAvLyBOYW1lZCBh
ZnRlciBwcm9wZXJ0eSBuYW1lIFwnJXNcJyB3aGlsZSBnZW5lcmF0aW5nICVzLicgJSAoZW51bV9t
ZW1iZXIubWVtYmVyX25hbWUsIG9iamVjdF9uYW1lKSkKLSAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZChzZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9yX2Fub255bW91c19lbnVtX21lbWJlcihlbnVtX21l
bWJlcikpCi0gICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9idWlsZGVyX3N0YXRl
X2VudW0odHlwZV9kZWNsYXJhdGlvbikpCi0KLSAgICAgICAgY29uc3RydWN0b3JfZXhhbXBsZSA9
IFtdCi0gICAgICAgIGNvbnN0cnVjdG9yX2V4YW1wbGUuYXBwZW5kKCcgICAgICogUmVmUHRyPCVz
PiByZXN1bHQgPSAlczo6Y3JlYXRlKCknICUgKG9iamVjdF9uYW1lLCBvYmplY3RfbmFtZSkpCi0g
ICAgICAgIGZvciBtZW1iZXIgaW4gcmVxdWlyZWRfbWVtYmVyczoKLSAgICAgICAgICAgIGNvbnN0
cnVjdG9yX2V4YW1wbGUuYXBwZW5kKCcgICAgICogICAgIC5zZXQlcyguLi4pJyAlIHVjZmlyc3Qo
bWVtYmVyLm1lbWJlcl9uYW1lKSkKLQotICAgICAgICBidWlsZGVyX2FyZ3MgPSB7Ci0gICAgICAg
ICAgICAnb2JqZWN0VHlwZSc6IG9iamVjdF9uYW1lLAotICAgICAgICAgICAgJ2NvbnN0cnVjdG9y
RXhhbXBsZSc6ICdcbicuam9pbihjb25zdHJ1Y3Rvcl9leGFtcGxlKSArICc7JywKLSAgICAgICAg
fQotCi0gICAgICAgIGxpbmVzLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuVHlwZUJ1aWxkZXJE
ZWNsYXJhdGlvblByZWx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipidWlsZGVyX2FyZ3MpKQotICAg
ICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gcmVxdWlyZWRfbWVtYmVyczoKLSAgICAgICAgICAgIGxp
bmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9idWlsZGVyX3NldHRlcl9mb3JfbWVtYmVyKHR5cGVf
bWVtYmVyLCBkb21haW4pKQotICAgICAgICBsaW5lcy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
LlR5cGVCdWlsZGVyRGVjbGFyYXRpb25Qb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmJ1aWxk
ZXJfYXJncykpCi0gICAgICAgIGZvciBtZW1iZXIgaW4gb3B0aW9uYWxfbWVtYmVyczoKLSAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV91bmNoZWNrZWRfc2V0dGVyX2Zvcl9t
ZW1iZXIobWVtYmVyLCBkb21haW4pKQotCi0gICAgICAgIGlmIEdlbmVyYXRvci50eXBlX2hhc19v
cGVuX2ZpZWxkcyh0eXBlX2RlY2xhcmF0aW9uLnR5cGUpOgotICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcnKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgLy8gUHJvcGVydHkgbmFtZXMg
Zm9yIHR5cGUgZ2VuZXJhdGVkIGFzIG9wZW4uJykKLSAgICAgICAgICAgIGZvciB0eXBlX21lbWJl
ciBpbiB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVyczoKLSAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3QgY2hhciogJXM7JyAlIHVjZmlyc3QodHlwZV9tZW1i
ZXIubWVtYmVyX25hbWUpKQotCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfTsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJycpCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCi0KLSAgICBk
ZWYgX2dlbmVyYXRlX3N0cnVjdF9mb3JfZW51bV9kZWNsYXJhdGlvbihzZWxmLCBlbnVtX2RlY2xh
cmF0aW9uKToKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVz
ICovJyAlIGVudW1fZGVjbGFyYXRpb24uZGVzY3JpcHRpb24pCi0gICAgICAgIGxpbmVzLmV4dGVu
ZChzZWxmLl9nZW5lcmF0ZV9zdHJ1Y3RfZm9yX2VudW1fdHlwZShlbnVtX2RlY2xhcmF0aW9uLnR5
cGVfbmFtZSwgZW51bV9kZWNsYXJhdGlvbi50eXBlKSkKLSAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVfc3RydWN0X2Zvcl9hbm9ueW1vdXNfZW51bV9t
ZW1iZXIoc2VsZiwgZW51bV9tZW1iZXIpOgotICAgICAgICBkZWYgYXBwbHlfaW5kZW50YXRpb24o
bGluZSk6Ci0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoKCcjJywgJy8qJywgJyovJywg
Jy8vJykpIG9yIGxlbihsaW5lKSBpcyAwOgotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAnICAgICcgKyBsaW5lCi0K
LSAgICAgICAgaW5kZW50ZWRfbGluZXMgPSBtYXAoYXBwbHlfaW5kZW50YXRpb24sIHNlbGYuX2dl
bmVyYXRlX3N0cnVjdF9mb3JfZW51bV90eXBlKGVudW1fbWVtYmVyLm1lbWJlcl9uYW1lLCBlbnVt
X21lbWJlci50eXBlKSkKLSAgICAgICAgcmV0dXJuICdcbicuam9pbihpbmRlbnRlZF9saW5lcykK
LQotICAgIGRlZiBfZ2VuZXJhdGVfc3RydWN0X2Zvcl9lbnVtX3R5cGUoc2VsZiwgZW51bV9uYW1l
LCBlbnVtX3R5cGUpOgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGVudW1fbmFtZSA9IHVj
Zmlyc3QoZW51bV9uYW1lKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ2VudW0gY2xhc3MgJXMgeycg
JSBlbnVtX25hbWUpCi0gICAgICAgIGZvciBlbnVtX3ZhbHVlIGluIGVudW1fdHlwZS5lbnVtX3Zh
bHVlcygpOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgJXMgPSAlcywnICUgKEdlbmVy
YXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpLCBzZWxmLmVuY29k
aW5nX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpKSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9
OyAvLyBlbnVtIGNsYXNzICVzJyAlIGVudW1fbmFtZSkKLSAgICAgICAgcmV0dXJuIGxpbmVzICAj
IFRoZSBjYWxsZXIgbWF5IHdhbnQgdG8gYWRqdXN0IGluZGVudGF0aW9uLCBzbyBkb24ndCBqb2lu
IHRoZXNlIGxpbmVzLgotCi0gICAgZGVmIF9nZW5lcmF0ZV9idWlsZGVyX3N0YXRlX2VudW0oc2Vs
ZiwgdHlwZV9kZWNsYXJhdGlvbik6Ci0gICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgcmVxdWly
ZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVtYmVyLmlzX29wdGlvbmFs
LCB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKLSAgICAgICAgZW51bV92YWx1ZXMgPSBb
XQotCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGVudW0geycpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgICAgICBOb0ZpZWxkc1NldCA9IDAsJykKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
bGVuKHJlcXVpcmVkX21lbWJlcnMpKToKLSAgICAgICAgICAgIGVudW1fdmFsdWUgPSAiJXNTZXQi
ICUgdWNmaXJzdChyZXF1aXJlZF9tZW1iZXJzW2ldLm1lbWJlcl9uYW1lKQotICAgICAgICAgICAg
ZW51bV92YWx1ZXMuYXBwZW5kKGVudW1fdmFsdWUpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICAgICAgJXMgPSAxIDw8ICVkLCcgJSAoZW51bV92YWx1ZSwgaSkpCi0gICAgICAgIGlmIGxl
bihlbnVtX3ZhbHVlcykgPiAwOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIEFs
bEZpZWxkc1NldCA9ICglcyknICUgJyB8ICcuam9pbihlbnVtX3ZhbHVlcykpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgQWxsRmllbGRzU2V0ID0gMCcp
Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIH07JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcn
KQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9i
dWlsZGVyX3NldHRlcl9mb3JfbWVtYmVyKHNlbGYsIHR5cGVfbWVtYmVyLCBkb21haW4pOgotICAg
ICAgICBzZXR0ZXJfYXJncyA9IHsKLSAgICAgICAgICAgICdjYW1lbE5hbWUnOiB1Y2ZpcnN0KHR5
cGVfbWVtYmVyLm1lbWJlcl9uYW1lKSwKLSAgICAgICAgICAgICdmcmFtZXdvcmtQcmVmaXgnOiBz
ZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3ByZWZpeCcpLAotICAgICAgICAgICAgJ2tl
eWVkU2V0JzogR2VuZXJhdG9yLmtleWVkX3NldF9tZXRob2RfZm9yX3R5cGUodHlwZV9tZW1iZXIu
dHlwZSksCi0gICAgICAgICAgICAnbmFtZSc6IHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lLAotICAg
ICAgICAgICAgJ3BhcmFtZXRlclR5cGUnOiBHZW5lcmF0b3IudHlwZV9zdHJpbmdfZm9yX3R5cGVf
bWVtYmVyKHR5cGVfbWVtYmVyKQotICAgICAgICB9Ci0KLSAgICAgICAgbGluZXMgPSBbXQotICAg
ICAgICBsaW5lcy5hcHBlbmQoJycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBCdWls
ZGVyPFNUQVRFIHwgJShjYW1lbE5hbWUpc1NldD4mIHNldCUoY2FtZWxOYW1lKXMoJShwYXJhbWV0
ZXJUeXBlKXMgdmFsdWUpJyAlIHNldHRlcl9hcmdzKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICAgICAgeycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgQ09NUElMRV9BU1NF
UlQoIShTVEFURSAmICUoY2FtZWxOYW1lKXNTZXQpLCBwcm9wZXJ0eV8lKG5hbWUpc19hbHJlYWR5
X3NldCk7JyAlIHNldHRlcl9hcmdzKQotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9tZW1i
ZXIudHlwZSwgRW51bVR5cGUpOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAg
ICBtX3Jlc3VsdC0+JShrZXllZFNldClzKEFTQ0lJTGl0ZXJhbCgiJShuYW1lKXMiKSwgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Z2V0JShmcmFtZXdvcmtQcmVmaXgpc0VudW1Db25zdGFudFZhbHVl
KHN0YXRpY19jYXN0PGludD4odmFsdWUpKSk7JyAlIHNldHRlcl9hcmdzKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICBtX3Jlc3VsdC0+JShrZXll
ZFNldClzKEFTQ0lJTGl0ZXJhbCgiJShuYW1lKXMiKSwgdmFsdWUpOycgJSBzZXR0ZXJfYXJncykK
LSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPCUoY2Ft
ZWxOYW1lKXNTZXQ+KCk7JyAlIHNldHRlcl9hcmdzKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICAgICAgfScpCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCi0KLSAgICBkZWYgX2dl
bmVyYXRlX3VuY2hlY2tlZF9zZXR0ZXJfZm9yX21lbWJlcihzZWxmLCB0eXBlX21lbWJlciwgZG9t
YWluKToKLSAgICAgICAgc2V0dGVyX2FyZ3MgPSB7Ci0gICAgICAgICAgICAnY2FtZWxOYW1lJzog
dWNmaXJzdCh0eXBlX21lbWJlci5tZW1iZXJfbmFtZSksCi0gICAgICAgICAgICAnZnJhbWV3b3Jr
UHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKSwKLSAgICAg
ICAgICAgICdrZXllZFNldCc6IEdlbmVyYXRvci5rZXllZF9zZXRfbWV0aG9kX2Zvcl90eXBlKHR5
cGVfbWVtYmVyLnR5cGUpLAotICAgICAgICAgICAgJ25hbWUnOiB0eXBlX21lbWJlci5tZW1iZXJf
bmFtZSwKLSAgICAgICAgICAgICdwYXJhbWV0ZXJUeXBlJzogR2VuZXJhdG9yLnR5cGVfc3RyaW5n
X2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlcikKLSAgICAgICAgfQotCi0gICAgICAgIGxpbmVz
ID0gW10KLSAgICAgICAgbGluZXMuYXBwZW5kKCcnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICB2b2lkIHNldCUoY2FtZWxOYW1lKXMoJShwYXJhbWV0ZXJUeXBlKXMgdmFsdWUpJyAlIHNldHRl
cl9hcmdzKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB7JykKLSAgICAgICAgaWYgaXNpbnN0
YW5jZSh0eXBlX21lbWJlci50eXBlLCBFbnVtVHlwZSk6Ci0gICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6JShrZXllZFNldClzKEFTQ0lJTGl0ZXJh
bCgiJShuYW1lKXMiKSwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0JShmcmFtZXdvcmtQcmVm
aXgpc0VudW1Db25zdGFudFZhbHVlKHN0YXRpY19jYXN0PGludD4odmFsdWUpKSk7JyAlIHNldHRl
cl9hcmdzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAg
IEluc3BlY3Rvck9iamVjdEJhc2U6OiUoa2V5ZWRTZXQpcyhBU0NJSUxpdGVyYWwoIiUobmFtZSlz
IiksIHZhbHVlKTsnICUgc2V0dGVyX2FyZ3MpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIH0n
KQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9m
b3J3YXJkX2RlY2xhcmF0aW9uc19mb3JfYmluZGluZ190cmFpdHMoc2VsZik6Ci0gICAgICAgICMg
QSBsaXN0IG9mIChidWlsZGVyX3R5cGUsIG5lZWRzX3J1bnRpbWVfY2FzdCkKLSAgICAgICAgdHlw
ZV9hcmd1bWVudHMgPSBbXQotCi0gICAgICAgIGZvciBkb21haW4gaW4gc2VsZi5kb21haW5zX3Rv
X2dlbmVyYXRlKCk6Ci0gICAgICAgICAgICBkZWNsYXJhdGlvbnNfdG9fZ2VuZXJhdGUgPSBmaWx0
ZXIobGFtYmRhIGRlY2w6IHNlbGYudHlwZV9uZWVkc19zaGFwZV9hc3NlcnRpb25zKGRlY2wudHlw
ZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9ucykKLQotICAgICAgICAgICAgZm9yIHR5cGVfZGVj
bGFyYXRpb24gaW4gZGVjbGFyYXRpb25zX3RvX2dlbmVyYXRlOgotICAgICAgICAgICAgICAgIGZv
ciB0eXBlX21lbWJlciBpbiB0eXBlX2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVyczoKLSAgICAgICAg
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX21lbWJlci50eXBlLCBFbnVtVHlwZSk6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlX2FyZ3VtZW50cy5hcHBlbmQoKEdlbmVyYXRvci50
eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlciwgdHlwZV9kZWNs
YXJhdGlvbiksIEZhbHNlKSkKLQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHlwZV9k
ZWNsYXJhdGlvbi50eXBlLCBPYmplY3RUeXBlKToKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9h
cmd1bWVudHMuYXBwZW5kKChHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19mb3JfdHlwZSh0
eXBlX2RlY2xhcmF0aW9uLnR5cGUpLCBHZW5lcmF0b3IudHlwZV9uZWVkc19ydW50aW1lX2Nhc3Rz
KHR5cGVfZGVjbGFyYXRpb24udHlwZSkpKQotCi0gICAgICAgIHN0cnVjdF9rZXl3b3JkcyA9IFsn
c3RydWN0J10KLSAgICAgICAgZnVuY3Rpb25fa2V5d29yZHMgPSBbJ3N0YXRpYyB2b2lkJ10KLSAg
ICAgICAgZXhwb3J0X21hY3JvID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdleHBv
cnRfbWFjcm8nLCBOb25lKQotICAgICAgICBpZiBleHBvcnRfbWFjcm8gaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBzdHJ1Y3Rfa2V5d29yZHMuYXBwZW5kKGV4cG9ydF9tYWNybykKLSAgICAgICAg
ICAgICNmdW5jdGlvbl9rZXl3b3Jkc1sxOjFdID0gW2V4cG9ydF9tYWNyb10KLQotICAgICAgICBs
aW5lcyA9IFtdCi0gICAgICAgIGZvciBhcmd1bWVudCBpbiB0eXBlX2FyZ3VtZW50czoKLSAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgndGVtcGxhdGU8PiAlcyBCaW5kaW5nVHJhaXRzPCVzPiB7JyAl
ICgnICcuam9pbihzdHJ1Y3Rfa2V5d29yZHMpLCBhcmd1bWVudFswXSkpCi0gICAgICAgICAgICBp
ZiBhcmd1bWVudFsxXToKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3N0YXRpYyBQYXNz
UmVmUHRyPCVzPiBydW50aW1lQ2FzdChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IHZhbHVlKTsnICUgYXJndW1lbnRbMF0pCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyNp
ZiAhQVNTRVJUX0RJU0FCTEVEJykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJXMgYXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSopOycgJSAnICcu
am9pbihmdW5jdGlvbl9rZXl3b3JkcykpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRp
ZiAvLyAhQVNTRVJUX0RJU0FCTEVEJykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnfTsnKQot
ICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVy
X2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjkyYWE4YWI5M2MxMTE2ZDA4ZDFkOGZiMmVlYThm
YmUzMGI0MTAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X3R5cGVfYnVpbGRlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4NCAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzdHJp
bmcKLWZyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQotCi1mcm9tIGdlbmVyYXRvciBpbXBvcnQg
R2VuZXJhdG9yLCB1Y2ZpcnN0Ci1mcm9tIGdlbmVyYXRvcl90ZW1wbGF0ZXMgaW1wb3J0IEdlbmVy
YXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKLWZyb20gbW9kZWxzIGltcG9ydCBBbGlhc2VkVHlw
ZSwgQXJyYXlUeXBlLCBFbnVtVHlwZSwgT2JqZWN0VHlwZQotCi1sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcignZ2xvYmFsJykKLQotCi1jbGFzcyBUeXBlQnVpbGRlckltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKEdlbmVyYXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxl
cGF0aCk6Ci0gICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmls
ZXBhdGgpCi0KLSAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4g
Ikluc3BlY3RvciVzVHlwZUJ1aWxkZXJzLmNwcCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNl
dHRpbmcoJ3ByZWZpeCcpCi0KLSAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgotICAgICAg
ICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dlbmVyYXRlKCkKLSAgICAgICAgc2VsZi5jYWxj
dWxhdGVfdHlwZXNfcmVxdWlyaW5nX3NoYXBlX2Fzc2VydGlvbnMoZG9tYWlucykKLQotICAgICAg
ICBzZWNvbmRhcnlfaGVhZGVycyA9IFsnPHd0Zi90ZXh0L0NTdHJpbmcuaD4nXQotCi0gICAgICAg
IGhlYWRlcl9hcmdzID0gewotICAgICAgICAgICAgJ3ByaW1hcnlJbmNsdWRlJzogJyJJbnNwZWN0
b3Ilc1R5cGVCdWlsZGVycy5oIicgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ3By
ZWZpeCcpLAotICAgICAgICAgICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogIlxuIi5qb2luKFsnI2lu
Y2x1ZGUgJXMnICUgaGVhZGVyIGZvciBoZWFkZXIgaW4gc2Vjb25kYXJ5X2hlYWRlcnNdKSwKLSAg
ICAgICAgICAgICdpbnB1dEZpbGVuYW1lJzogc2VsZi5faW5wdXRfZmlsZXBhdGgKLSAgICAgICAg
fQotCi0gICAgICAgIHNlY3Rpb25zID0gW10KLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYu
Z2VuZXJhdGVfbGljZW5zZSgpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVt
cGxhdGVzLkNwcEltcGxlbWVudGF0aW9uUHJlbHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRl
cl9hcmdzKSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCduYW1lc3BhY2UgVHlwZUJ1aWxkZXIg
eycpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX21hcHBpbmco
KSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX29wZW5fZmllbGRfbmFt
ZXMoKSkKLSAgICAgICAgYnVpbGRlcl9zZWN0aW9ucyA9IG1hcChzZWxmLl9nZW5lcmF0ZV9idWls
ZGVyc19mb3JfZG9tYWluLCBkb21haW5zKQotICAgICAgICBzZWN0aW9ucy5leHRlbmQoZmlsdGVy
KGxhbWJkYSBzZWN0aW9uOiBsZW4oc2VjdGlvbikgPiAwLCBidWlsZGVyX3NlY3Rpb25zKSkKLSAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKCd9IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcicpCi0gICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ3BwSW1wbGVtZW50YXRpb25Q
b3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKLQotICAgICAgICByZXR1
cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCi0KLSAgICAjIFByaXZhdGUgbWV0aG9kcy4KLQotICAg
IGRlZiBfZ2VuZXJhdGVfZW51bV9tYXBwaW5nKHNlbGYpOgotICAgICAgICBmcmFtZXdvcmtfcHJl
Zml4ID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdwcmVmaXgnKQotICAgICAgICBs
aW5lcyA9IFtdCi0KLSAgICAgICAgbGluZXMuYXBwZW5kKCdzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgZW51bV9jb25zdGFudF92YWx1ZXNbXSA9IHsnKQotICAgICAgICBsaW5lcy5leHRlbmQoWycg
ICAgIiVzIiwnICUgZW51bV92YWx1ZSBmb3IgZW51bV92YWx1ZSBpbiBzZWxmLmFzc2lnbmVkX2Vu
dW1fdmFsdWVzKCldKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ307JykKLSAgICAgICAgbGluZXMu
YXBwZW5kKCcnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ1N0cmluZyBnZXQlc0VudW1Db25zdGFu
dFZhbHVlKGludCBjb2RlKSB7JyAlIGZyYW1ld29ya19wcmVmaXgpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIHJldHVybiBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb2RlXTsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJ30nKQotCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCi0KLSAg
ICBkZWYgX2dlbmVyYXRlX29wZW5fZmllbGRfbmFtZXMoc2VsZik6Ci0gICAgICAgIGxpbmVzID0g
W10KLSAgICAgICAgZm9yIGRvbWFpbiBpbiBzZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKToKLSAg
ICAgICAgICAgIGZvciB0eXBlX2RlY2xhcmF0aW9uIGluIGZpbHRlcihsYW1iZGEgZGVjbDogR2Vu
ZXJhdG9yLnR5cGVfaGFzX29wZW5fZmllbGRzKGRlY2wudHlwZSksIGRvbWFpbi50eXBlX2RlY2xh
cmF0aW9ucyk6Ci0gICAgICAgICAgICAgICAgZm9yIHR5cGVfbWVtYmVyIGluIHNvcnRlZCh0eXBl
X2RlY2xhcmF0aW9uLnR5cGVfbWVtYmVycywga2V5PWxhbWJkYSBtZW1iZXI6IG1lbWJlci5tZW1i
ZXJfbmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkX25hbWUgPSAnOjonLmpvaW4oWydJ
bnNwZWN0b3InLCAnVHlwZUJ1aWxkZXInLCBkb21haW4uZG9tYWluX25hbWUsIHVjZmlyc3QodHlw
ZV9kZWNsYXJhdGlvbi50eXBlX25hbWUpLCB1Y2ZpcnN0KHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1l
KV0pCi0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnY29uc3QgY2hhciogJXMgPSAi
JXMiOycgJSAoZmllbGRfbmFtZSwgdHlwZV9tZW1iZXIubWVtYmVyX25hbWUpKQotCi0gICAgICAg
IHJldHVybiAnXG4nLmpvaW4obGluZXMpCi0KLSAgICBkZWYgX2dlbmVyYXRlX2J1aWxkZXJzX2Zv
cl9kb21haW4oc2VsZiwgZG9tYWluKToKLSAgICAgICAgc2VjdGlvbnMgPSBbXQotICAgICAgICBk
ZWNsYXJhdGlvbnNfdG9fZ2VuZXJhdGUgPSBmaWx0ZXIobGFtYmRhIGRlY2w6IHNlbGYudHlwZV9u
ZWVkc19zaGFwZV9hc3NlcnRpb25zKGRlY2wudHlwZSksIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9u
cykKLQotICAgICAgICBmb3IgdHlwZV9kZWNsYXJhdGlvbiBpbiBkZWNsYXJhdGlvbnNfdG9fZ2Vu
ZXJhdGU6Ci0gICAgICAgICAgICBmb3IgdHlwZV9tZW1iZXIgaW4gdHlwZV9kZWNsYXJhdGlvbi50
eXBlX21lbWJlcnM6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0eXBlX21lbWJlci50
eXBlLCBFbnVtVHlwZSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxm
Ll9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX2VudW0odHlwZV9tZW1iZXIsIHR5cGVfZGVjbGFyYXRp
b24pKQotCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfZGVjbGFyYXRpb24udHlwZSwg
T2JqZWN0VHlwZSk6Ci0gICAgICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuX2dlbmVy
YXRlX2Fzc2VydGlvbl9mb3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHR5cGVfZGVjbGFyYXRpb24pKQot
ICAgICAgICAgICAgICAgIGlmIEdlbmVyYXRvci50eXBlX25lZWRzX3J1bnRpbWVfY2FzdHModHlw
ZV9kZWNsYXJhdGlvbi50eXBlKToKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuX2dlbmVyYXRlX3J1bnRpbWVfY2FzdF9mb3Jfb2JqZWN0X2RlY2xhcmF0aW9uKHR5cGVf
ZGVjbGFyYXRpb24pKQotCi0gICAgICAgIHJldHVybiAnXG5cbicuam9pbihzZWN0aW9ucykKLQot
ICAgIGRlZiBfZ2VuZXJhdGVfcnVudGltZV9jYXN0X2Zvcl9vYmplY3RfZGVjbGFyYXRpb24oc2Vs
Ziwgb2JqZWN0X2RlY2xhcmF0aW9uKToKLSAgICAgICAgYXJncyA9IHsKLSAgICAgICAgICAgICdv
YmplY3RUeXBlJzogR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUob2JqZWN0
X2RlY2xhcmF0aW9uLnR5cGUpCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFRlbXBsYXRlKFRl
bXBsYXRlcy5UeXBlQnVpbGRlck9iamVjdFJ1bnRpbWVDYXN0KS5zdWJzdGl0dXRlKE5vbmUsICoq
YXJncykKLQotICAgIGRlZiBfZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9vYmplY3RfZGVjbGFyYXRp
b24oc2VsZiwgb2JqZWN0X2RlY2xhcmF0aW9uKToKLSAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9
IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCBvYmplY3RfZGVj
bGFyYXRpb24udHlwZV9tZW1iZXJzKQotICAgICAgICBvcHRpb25hbF9tZW1iZXJzID0gZmlsdGVy
KGxhbWJkYSBtZW1iZXI6IG1lbWJlci5pc19vcHRpb25hbCwgb2JqZWN0X2RlY2xhcmF0aW9uLnR5
cGVfbWVtYmVycykKLSAgICAgICAgc2hvdWxkX2NvdW50X3Byb3BlcnRpZXMgPSBub3QgR2VuZXJh
dG9yLnR5cGVfaGFzX29wZW5fZmllbGRzKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKQotICAgICAg
ICBsaW5lcyA9IFtdCi0KLSAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgIUFTU0VSVF9ESVNBQkxF
RCcpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgndm9pZCBCaW5kaW5nVHJhaXRzPCVzPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUpJyAl
IChHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19mb3JfdHlwZShvYmplY3RfZGVjbGFyYXRp
b24udHlwZSkpKQotICAgICAgICBsaW5lcy5hcHBlbmQoIiIiewotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IG9iamVjdDsKLSAgICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9i
amVjdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChjYXN0UmVzLCBjYXN0UmVzKTsiIiIpCi0gICAgICAg
IGZvciB0eXBlX21lbWJlciBpbiByZXF1aXJlZF9tZW1iZXJzOgotICAgICAgICAgICAgYXJncyA9
IHsKLSAgICAgICAgICAgICAgICAnbWVtYmVyTmFtZSc6IHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1l
LAotICAgICAgICAgICAgICAgICdhc3NlcnRNZXRob2QnOiBHZW5lcmF0b3IuYXNzZXJ0aW9uX21l
dGhvZF9mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbikKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiIiAgICB7Ci0gICAgICAg
IEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgJShtZW1iZXJOYW1lKXNQb3MgPSBvYmplY3QtPmZp
bmQoQVNDSUlMaXRlcmFsKCIlKG1lbWJlck5hbWUpcyIpKTsKLSAgICAgICAgQVNTRVJUKCUobWVt
YmVyTmFtZSlzUG9zICE9IG9iamVjdC0+ZW5kKCkpOwotICAgICAgICAlKGFzc2VydE1ldGhvZClz
KCUobWVtYmVyTmFtZSlzUG9zLT52YWx1ZS5nZXQoKSk7Ci0gICAgfSIiIiAlIGFyZ3MpCi0KLSAg
ICAgICAgaWYgc2hvdWxkX2NvdW50X3Byb3BlcnRpZXM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJycpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpbnQgZm91bmRQcm9wZXJ0aWVz
Q291bnQgPSAlczsnICUgbGVuKHJlcXVpcmVkX21lbWJlcnMpKQotCi0gICAgICAgIGZvciB0eXBl
X21lbWJlciBpbiBvcHRpb25hbF9tZW1iZXJzOgotICAgICAgICAgICAgYXJncyA9IHsKLSAgICAg
ICAgICAgICAgICAnbWVtYmVyTmFtZSc6IHR5cGVfbWVtYmVyLm1lbWJlcl9uYW1lLAotICAgICAg
ICAgICAgICAgICdhc3NlcnRNZXRob2QnOiBHZW5lcmF0b3IuYXNzZXJ0aW9uX21ldGhvZF9mb3Jf
dHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbikKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiIiAgICB7Ci0gICAgICAgIEluc3BlY3Rv
ck9iamVjdDo6aXRlcmF0b3IgJShtZW1iZXJOYW1lKXNQb3MgPSBvYmplY3QtPmZpbmQoQVNDSUlM
aXRlcmFsKCIlKG1lbWJlck5hbWUpcyIpKTsKLSAgICAgICAgaWYgKCUobWVtYmVyTmFtZSlzUG9z
ICE9IG9iamVjdC0+ZW5kKCkpIHsKLSAgICAgICAgICAgICUoYXNzZXJ0TWV0aG9kKXMoJShtZW1i
ZXJOYW1lKXNQb3MtPnZhbHVlLmdldCgpKTsiIiIgJSBhcmdzKQotCi0gICAgICAgICAgICBpZiBz
aG91bGRfY291bnRfcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICAgICAgICAgICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7JykKLSAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgICAgICB9JykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIH0nKQotCi0g
ICAgICAgIGlmIHNob3VsZF9jb3VudF9wcm9wZXJ0aWVzOgotICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKScpCi0g
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJvcGVy
dGllcyBpbiBvYmplY3Q6ICVzXFxuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKLSAgICAgICAgbGluZXMuYXBwZW5k
KCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCi0gICAgICAgIHJldHVybiAnXG4nLmpvaW4o
bGluZXMpCi0KLSAgICBkZWYgX2dlbmVyYXRlX2Fzc2VydGlvbl9mb3JfZW51bShzZWxmLCBlbnVt
X21lbWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKToKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAg
ICBsaW5lcy5hcHBlbmQoJyNpZiAhQVNTRVJUX0RJU0FCTEVEJykKLSAgICAgICAgbGluZXMuYXBw
ZW5kKCd2b2lkICVzKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVlKScgJSBHZW5lcmF0
b3IuYXNzZXJ0aW9uX21ldGhvZF9mb3JfdHlwZV9tZW1iZXIoZW51bV9tZW1iZXIsIG9iamVjdF9k
ZWNsYXJhdGlvbikpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIFN0cmluZyBzOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGJvb2wgY2Fz
dF9yZXMgPSB2YWx1ZS0+YXNTdHJpbmcoJnMpOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IEFTU0VSVChjYXN0X3Jlcyk7JykKLQotICAgICAgICBhc3NlcnRfY29uZGl0aW9uID0gJyB8fCAn
LmpvaW4oWydzID09ICIlcyInICUgZW51bV92YWx1ZSBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX21l
bWJlci50eXBlLmVudW1fdmFsdWVzKCldKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBBU1NF
UlQoJXMpOycgJSBhc3NlcnRfY29uZGl0aW9uKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQot
ICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVEJykKLQotICAg
ICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yLnB5CmluZGV4
IGM2M2VmYWI0OWYzYmZhNzJlN2QyM2U0YTE1ZDQ2YzMwMWM0YzBlYWEuLmVhYWEzMzdmMDgyYzdj
MzdlMGVlMTRjOWRhZjc3YWE2YjliZTg1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3IucHkKQEAg
LTI2NywyMiArMjY3LDIyIEBAIGNsYXNzIEdlbmVyYXRvcjoKIAogICAgICMgR2VuZXJhdGUgdHlw
ZSByZXByZXNlbnRhdGlvbnMgZm9yIHZhcmlvdXMgc2l0dWF0aW9ucy4KICAgICBAc3RhdGljbWV0
aG9kCi0gICAgZGVmIHR5cGVfYnVpbGRlcl9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpOgorICAgIGRl
ZiBwcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShfdHlwZSk6CiAgICAgICAgIGlmIGlzaW5z
dGFuY2UoX3R5cGUsIE9iamVjdFR5cGUpIGFuZCBsZW4oX3R5cGUubWVtYmVycykgPT0gMDoKICAg
ICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QnCiAgICAgICAgIGlm
IGlzaW5zdGFuY2UoX3R5cGUsIChPYmplY3RUeXBlLCBBbGlhc2VkVHlwZSwgRW51bVR5cGUpKToK
LSAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6JXM6OiVzJyAlIChf
dHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQorICAgICAg
ICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlByb3RvY29sOjolczo6JXMnICUgKF90eXBlLnR5cGVf
ZG9tYWluKCkuZG9tYWluX25hbWUsIF90eXBlLnJhd19uYW1lKCkpCiAgICAgICAgIGlmIGlzaW5z
dGFuY2UoX3R5cGUsIEFycmF5VHlwZSk6Ci0gICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PCVzPicgJSBHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19m
b3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUpCisgICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PCVzPicgJSBHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9zdHJpbmdf
Zm9yX3R5cGUoX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBl
LCBQcmltaXRpdmVUeXBlKToKICAgICAgICAgICAgIHJldHVybiBHZW5lcmF0b3IuY3BwX25hbWVf
Zm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiB0
eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlX21lbWJlcih0eXBlX21lbWJlciwgb2JqZWN0X2Rl
Y2xhcmF0aW9uKToKKyAgICBkZWYgcHJvdG9jb2xfdHlwZV9zdHJpbmdfZm9yX3R5cGVfbWVtYmVy
KHR5cGVfbWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pOgogICAgICAgICBpZiBpc2luc3RhbmNl
KHR5cGVfbWVtYmVyLnR5cGUsIEVudW1UeXBlKSBhbmQgdHlwZV9tZW1iZXIudHlwZS5pc19hbm9u
eW1vdXM6Ci0gICAgICAgICAgICByZXR1cm4gJzo6Jy5qb2luKFtHZW5lcmF0b3IudHlwZV9idWls
ZGVyX3N0cmluZ19mb3JfdHlwZShvYmplY3RfZGVjbGFyYXRpb24udHlwZSksIHVjZmlyc3QodHlw
ZV9tZW1iZXIubWVtYmVyX25hbWUpXSkKKyAgICAgICAgICAgIHJldHVybiAnOjonLmpvaW4oW0dl
bmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZShvYmplY3RfZGVjbGFyYXRpb24u
dHlwZSksIHVjZmlyc3QodHlwZV9tZW1iZXIubWVtYmVyX25hbWUpXSkKICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHJldHVybiBHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19mb3JfdHlw
ZSh0eXBlX21lbWJlci50eXBlKQorICAgICAgICAgICAgcmV0dXJuIEdlbmVyYXRvci5wcm90b2Nv
bF90eXBlX3N0cmluZ19mb3JfdHlwZSh0eXBlX21lbWJlci50eXBlKQogCiAgICAgQHN0YXRpY21l
dGhvZAogICAgIGRlZiB0eXBlX3N0cmluZ19mb3JfdW5jaGVja2VkX2Zvcm1hbF9pbl9wYXJhbWV0
ZXIocGFyYW1ldGVyKToKQEAgLTMyMSw5ICszMjEsOSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAg
QHN0YXRpY21ldGhvZAogICAgIGRlZiB0eXBlX3N0cmluZ19mb3JfdHlwZV93aXRoX25hbWUoX3R5
cGUsIHR5cGVfbmFtZSwgaXNfb3B0aW9uYWwpOgogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBl
LCAoQXJyYXlUeXBlLCBPYmplY3RUeXBlKSk6Ci0gICAgICAgICAgICByZXR1cm4gJ1Bhc3NSZWZQ
dHI8JXM+JyAlIEdlbmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQor
ICAgICAgICAgICAgcmV0dXJuICdQYXNzUmVmUHRyPCVzPicgJSBHZW5lcmF0b3IucHJvdG9jb2xf
dHlwZV9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUs
IEFsaWFzZWRUeXBlKToKLSAgICAgICAgICAgIGJ1aWxkZXJfdHlwZSA9IEdlbmVyYXRvci50eXBl
X2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQorICAgICAgICAgICAgYnVpbGRlcl90eXBl
ID0gR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQogICAgICAg
ICAgICAgaWYgaXNfb3B0aW9uYWw6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyog
Y29uc3QnICUgYnVpbGRlcl90eXBlCiAgICAgICAgICAgICBlbGlmIF90eXBlLmFsaWFzZWRfdHlw
ZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnaW50ZWdlcicsICdudW1iZXInXToKQEAgLTM0OCw3ICsz
NDgsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBpZiBfdHlwZS5pc19hbm9ueW1v
dXM6CiAgICAgICAgICAgICAgICAgZW51bV90eXBlX25hbWUgPSB1Y2ZpcnN0KHR5cGVfbmFtZSkK
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW51bV90eXBlX25hbWUgPSAnSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFp
bl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQorICAgICAgICAgICAgICAgIGVudW1fdHlwZV9uYW1l
ID0gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5k
b21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKIAogICAgICAgICAgICAgaWYgaXNfb3B0aW9u
YWw6CiAgICAgICAgICAgICAgICAgcmV0dXJuICclcyonICUgZW51bV90eXBlX25hbWUKQEAgLTM2
MywxOCArMzYzLDE4IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIF90eXBlID0gX3R5
cGUuYWxpYXNlZF90eXBlICAjIEZhbGwgdGhyb3VnaC4KIAogICAgICAgICBpZiBpc2luc3RhbmNl
KF90eXBlLCAoT2JqZWN0VHlwZSwgQXJyYXlUeXBlKSk6Ci0gICAgICAgICAgICByZXR1cm4gJ1Jl
ZlB0cjwlcz4mJyAlIEdlbmVyYXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBl
KQorICAgICAgICAgICAgcmV0dXJuICdSZWZQdHI8JXM+JicgJSBHZW5lcmF0b3IucHJvdG9jb2xf
dHlwZV9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUs
IFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBHZW5lcmF0b3IuY3BwX25h
bWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlz
X29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PCVzPioiICUgY3BwX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gIklu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDwlcz4qIiAlIGNwcF9uYW1lCiAgICAgICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiAnJXMqJyAlIGNwcF9uYW1lCiAgICAgICAg
IGlmIGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKToKICAgICAgICAgICAgIGlmIF90eXBlLmlz
X2Fub255bW91czoKICAgICAgICAgICAgICAgICByZXR1cm4gJ0luc3BlY3RvciVzQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjolcyonICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUs
IHVjZmlyc3QocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjolczo6JXMqJyAl
IChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzKicgJSAoX3R5
cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKIAogICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGZvcm1hbCBvdXQgcGFyYW1ldGVyIHR5cGUuIikK
IApAQCAtMzg5LDExICszODksMTEgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgX3R5
cGUgPSBfdHlwZS5wcmltaXRpdmVfdHlwZSAgIyBGYWxsIHRocm91Z2guCiAKICAgICAgICAgaWYg
aXNpbnN0YW5jZShfdHlwZSwgKE9iamVjdFR5cGUsIEFycmF5VHlwZSkpOgotICAgICAgICAgICAg
cmV0dXJuICdQYXNzUmVmUHRyPCVzPicgJSBHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmluZ19m
b3JfdHlwZShfdHlwZSkKKyAgICAgICAgICAgIHJldHVybiAnUGFzc1JlZlB0cjwlcz4nICUgR2Vu
ZXJhdG9yLnByb3RvY29sX3R5cGVfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQogICAgICAgICBpZiBp
c2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToKICAgICAgICAgICAgIGNwcF9uYW1lID0g
R2VuZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAg
IGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDwlcz4qIiAlIGNwcF9uYW1lCisgICAgICAgICAg
ICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8JXM+KiIgJSBjcHBf
bmFtZQogICAgICAgICAgICAgZWxpZiBfdHlwZS5xdWFsaWZpZWRfbmFtZSgpIGluIFsnaW50ZWdl
cicsICdudW1iZXInXToKICAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJhdG9yLmNwcF9uYW1l
X2Zvcl9wcmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGVsaWYgX3R5cGUucXVhbGlm
aWVkX25hbWUoKSBpbiBbJ3N0cmluZyddOgpAQCAtNDI1LDcgKzQyNSw3IEBAIGNsYXNzIEdlbmVy
YXRvcjoKICAgICAgICAgICAgIGlmIF90eXBlLnF1YWxpZmllZF9uYW1lKCkgaW4gWydhbnknLCAn
b2JqZWN0J106CiAgICAgICAgICAgICAgICAgcmV0dXJuICJSZWZQdHI8JXM+IiAlIEdlbmVyYXRv
ci5jcHBfbmFtZV9mb3JfcHJpbWl0aXZlX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBlbGlmIHBh
cmFtZXRlci5pc19vcHRpb25hbCBhbmQgX3R5cGUucXVhbGlmaWVkX25hbWUoKSBub3QgaW4gWydi
b29sZWFuJywgJ3N0cmluZycsICdpbnRlZ2VyJ106Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8JXM+IiAlIGNwcF9uYW1lCisgICAgICAg
ICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8JXM+IiAlIGNw
cF9uYW1lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiBjcHBfbmFt
ZQogCkBAIC00MzMsMzQgKzQzMywzNCBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgZGVmIHR5cGVf
c3RyaW5nX2Zvcl9zdGFja19vdXRfcGFyYW1ldGVyKHBhcmFtZXRlcik6CiAgICAgICAgIF90eXBl
ID0gcGFyYW1ldGVyLnR5cGUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKEFycmF5VHlw
ZSwgT2JqZWN0VHlwZSkpOgotICAgICAgICAgICAgcmV0dXJuICdSZWZQdHI8JXM+JyAlIEdlbmVy
YXRvci50eXBlX2J1aWxkZXJfc3RyaW5nX2Zvcl90eXBlKF90eXBlKQorICAgICAgICAgICAgcmV0
dXJuICdSZWZQdHI8JXM+JyAlIEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlw
ZShfdHlwZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpOgotICAg
ICAgICAgICAgYnVpbGRlcl90eXBlID0gR2VuZXJhdG9yLnR5cGVfYnVpbGRlcl9zdHJpbmdfZm9y
X3R5cGUoX3R5cGUpCisgICAgICAgICAgICBidWlsZGVyX3R5cGUgPSBHZW5lcmF0b3IucHJvdG9j
b2xfdHlwZV9zdHJpbmdfZm9yX3R5cGUoX3R5cGUpCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIu
aXNfb3B0aW9uYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpPcHRPdXRwdXQ8JXM+IiAlIGJ1aWxkZXJfdHlwZQorICAgICAgICAgICAgICAgIHJldHVy
biAiSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPiIgJSBidWlsZGVyX3R5cGUKICAg
ICAgICAgICAgIHJldHVybiAnJXMnICUgYnVpbGRlcl90eXBlCiAgICAgICAgIGlmIGlzaW5zdGFu
Y2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBHZW5lcmF0
b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAgICAgaWYgcGFy
YW1ldGVyLmlzX29wdGlvbmFsOgotICAgICAgICAgICAgICAgIHJldHVybiAiSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PCVzPiIgJSBjcHBfbmFtZQorICAgICAgICAgICAgICAgIHJl
dHVybiAiSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PCVzPiIgJSBjcHBfbmFtZQogICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gY3BwX25hbWUKICAgICAgICAg
aWYgaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUuaXNf
YW5vbnltb3VzOgogICAgICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yJXNCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1
Y2ZpcnN0KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCiAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6JXM6OiVzJyAlIChf
dHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50
eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogCiAgICAgQHN0YXRp
Y21ldGhvZAogICAgIGRlZiBhc3NlcnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlcih0eXBlX21l
bWJlciwgb2JqZWN0X2RlY2xhcmF0aW9uKToKIAogICAgICAgICBkZWYgYXNzZXJ0aW9uX21ldGhv
ZF9mb3JfdHlwZShfdHlwZSk6Ci0gICAgICAgICAgICByZXR1cm4gJ0JpbmRpbmdUcmFpdHM8JXM+
Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZScgJSBHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0
cmluZ19mb3JfdHlwZShfdHlwZSkKKyAgICAgICAgICAgIHJldHVybiAnQmluZGluZ1RyYWl0czwl
cz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlJyAlIEdlbmVyYXRvci5wcm90b2NvbF90eXBl
X3N0cmluZ19mb3JfdHlwZShfdHlwZSkKIAogICAgICAgICBpZiBpc2luc3RhbmNlKHR5cGVfbWVt
YmVyLnR5cGUsIEFsaWFzZWRUeXBlKToKICAgICAgICAgICAgIHJldHVybiBhc3NlcnRpb25fbWV0
aG9kX2Zvcl90eXBlKHR5cGVfbWVtYmVyLnR5cGUuYWxpYXNlZF90eXBlKQogICAgICAgICBpZiBp
c2luc3RhbmNlKHR5cGVfbWVtYmVyLnR5cGUsIEVudW1UeXBlKSBhbmQgdHlwZV9tZW1iZXIudHlw
ZS5pc19hbm9ueW1vdXM6Ci0gICAgICAgICAgICByZXR1cm4gJ0JpbmRpbmdUcmFpdHM8JXM+Ojph
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZScgJSBHZW5lcmF0b3IudHlwZV9idWlsZGVyX3N0cmlu
Z19mb3JfdHlwZV9tZW1iZXIodHlwZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbikKKyAgICAg
ICAgICAgIHJldHVybiAnQmluZGluZ1RyYWl0czwlcz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRU
eXBlJyAlIEdlbmVyYXRvci5wcm90b2NvbF90eXBlX3N0cmluZ19mb3JfdHlwZV9tZW1iZXIodHlw
ZV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbikKIAogICAgICAgICByZXR1cm4gYXNzZXJ0aW9u
X21ldGhvZF9mb3JfdHlwZSh0eXBlX21lbWJlci50eXBlKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCBmOWYwZjM3NTFjYmE5MmVlZGYzOWEyYjYzOTUz
ZjdkY2I4MWQ3MDc4Li42MTQ4NTI1MjJhM2UxNTUwYzdiMDg4YWQ0M2E5NDQ5Njg3Njc5NGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTIwNiw3ICsy
MDYsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CiB9OyIiIikKIAotICAgIFR5cGVCdWlsZGVyRGVjbGFyYXRpb25Q
cmVsdWRlID0gKAorICAgIFByb3RvY29sT2JqZWN0QnVpbGRlckRlY2xhcmF0aW9uUHJlbHVkZSA9
ICgKICIiIiAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAg
cHJpdmF0ZToKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgJHtvYmplY3RUeXBlfTsKICAgICBwdWJsaWM6IiIiKQogCi0gICAgVHlwZUJ1aWxkZXJEZWNs
YXJhdGlvblBvc3RsdWRlID0gKAorICAgIFByb3RvY29sT2JqZWN0QnVpbGRlckRlY2xhcmF0aW9u
UG9zdGx1ZGUgPSAoCiAiIiIKICAgICAgICAgb3BlcmF0b3IgUmVmUHRyPCR7b2JqZWN0VHlwZX0+
JiAoKQogICAgICAgICB7CkBAIC0yNDgsOSArMjQ4LDkgQEAgJHtjb25zdHJ1Y3RvckV4YW1wbGV9
CiAgICAgewogICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7IiIiKQorICAgIHR5cGVk
ZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRzOyIiIikK
IAotICAgIFR5cGVCdWlsZGVyT2JqZWN0UnVudGltZUNhc3QgPSAoCisgICAgUHJvdG9jb2xPYmpl
Y3RSdW50aW1lQ2FzdCA9ICgKICIiIlBhc3NSZWZQdHI8JHtvYmplY3RUeXBlfT4gQmluZGluZ1Ry
YWl0czwke29iamVjdFR5cGV9Pjo6cnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IG9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5CmluZGV4IDJmZDZkZmJlNzNkYTNmZTRmMmUxYTRjM2QxZWFiNDU1
ZDg3OGNlNmIuLjgwODkwYmU0ZmM1NTg1NTI2YWU5MDI4OTI5MTU1MjY1NTA0YmUwYzQgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQpAQCAtNTUsOCArNTUsOCBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZnJvbSBnZW5lcmF0
ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKICAgICBmcm9tIGdl
bmVyYXRlX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyIGltcG9ydCAqCiAgICAgZnJvbSBnZW5l
cmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCi0gICAgZnJv
bSBnZW5lcmF0ZV90eXBlX2J1aWxkZXJfaGVhZGVyIGltcG9ydCAqCi0gICAgZnJvbSBnZW5lcmF0
ZV90eXBlX2J1aWxkZXJfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKKyAgICBmcm9tIGdlbmVyYXRl
X3Byb3RvY29sX3R5cGVzX2hlYWRlciBpbXBvcnQgKgorICAgIGZyb20gZ2VuZXJhdGVfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKIAogCiBsb2dnaW5nLmJhc2ljQ29uZmln
KGZvcm1hdD0nJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMnLCBsZXZlbD1sb2dnaW5nLkVSUk9S
KQpAQCAtMTIzLDggKzEyMyw4IEBAIGRlZiBnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24ocHJp
bWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoPU5vbmUsCiAgICAgZ2VuZXJhdG9ycy5hcHBlbmQo
QmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFy
eV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICBnZW5lcmF0b3JzLmFwcGVuZChGcm9udGVu
ZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlv
bl9maWxlcGF0aCkpCiAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoRnJvbnRlbmREaXNwYXRjaGVySW1w
bGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxl
cGF0aCkpCi0gICAgZ2VuZXJhdG9ycy5hcHBlbmQoVHlwZUJ1aWxkZXJIZWFkZXJHZW5lcmF0b3Io
cHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCi0gICAgZ2VuZXJhdG9y
cy5hcHBlbmQoVHlwZUJ1aWxkZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2NvbCwgcHJp
bWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKKyAgICBnZW5lcmF0b3JzLmFwcGVuZChQcm90
b2NvbFR5cGVzSGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25f
ZmlsZXBhdGgpKQorICAgIGdlbmVyYXRvcnMuYXBwZW5kKFByb3RvY29sVHlwZXNJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkK
IAogICAgIHNpbmdsZV9vdXRwdXRfZmlsZV9jb250ZW50cyA9IFtdCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5j
LWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRleCBhMDk0MmMzN2I4NmEzZDRhYWRhOTc4NjljNzVm
YTQ0MDEyMTg5NjczLi4zMWFmMTQzMzE0NjY0MGJhNTVlZGI3YzUxODdlNTc3ZjZjYjFmZTNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC03NCw3ICs3NCw3IEBA
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVjdXRlU1FMQXN5
bmMiLCBbeyJuYW1lIjogImRhdGFiYXNlCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTk5LDE4ICs5OSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIFll
bGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50
Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhFcnJvclN0cmluZyosIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRf
Y29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBv
cHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8ZG91YmxlPiog
b3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIG9wdF9vdXRfcGF5
bG9hZCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRfZGF0
YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4m
IG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JT
dHJpbmcqLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3Rlcywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1w
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9w
dF9vdXRfcHJpbnRDb2xvcikgPSAwOwogICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiwgaW50IGlkKTsKLSAgICAgICAgdm9pZCBzZW5k
U3VjY2VzcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+
IGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiog
bm90ZXMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3Rh
bXAsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIHZhbHVlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBw
YXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9y
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKTsKICAgICB9
OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhF
cnJvclN0cmluZyosIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBQ
YXNzUmVmUHRyPEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s+IGNh
bGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3RyaW5n
KiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJp
bmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxv
YWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
YXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhFcnJvclN0cmluZyosIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMs
IGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92
YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9k
YXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYg
b3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyogb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKICAgICBjbGFzcyBFeGVjdXRl
U1FMQXN5bmNDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgRXhlY3V0ZVNRTEFz
eW5jQ2FsbGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiwgaW50IGlkKTsKLSAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJp
bmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2
YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBzcWxF
cnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBwcmludENvbG9y
KTsKKyAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3Vi
bGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgU3RyaW5n
JiBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKICAgICB9OwogICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcqLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQXN5bmNDYWxs
YmFjaz4gY2FsbGJhY2spID0gMDsKIHByb3RlY3RlZDoKQEAgLTIzMiwxNCArMjMyLDE0IEBAIHZv
aWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyhsb25nCiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBvdXRfY29s
dW1uTmFtZXM7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4g
b3V0X25vdGVzOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxkb3VibGU+
IG91dF90aW1lc3RhbXA7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBvdXRfdmFsdWVzOwotICAgIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBvdXRfcGF5bG9h
ZDsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlSWQ+IG91dF9kYXRhYmFzZUlkOwotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsK
LSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRf
c2NyZWVuQ29sb3I7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
U3RyaW5nPiBvdXRfbm90ZXM7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRv
dWJsZT4gb3V0X3RpbWVzdGFtcDsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG91dF92YWx1ZXM7CisgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG91dF9wYXlsb2Fk
OworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6RGF0YWJhc2VJZD4gb3V0X2RhdGFiYXNlSWQ7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOworICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsK
ICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xv
ciBvdXRfcHJpbnRDb2xvcjsKICAgICBtX2FnZW50LT5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzKCZlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1l
cywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwg
Jm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsICZvdXRfcHJp
bnRDb2xvcik7CiAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZwog
CiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNDYWxsYmFjayhQYXNzUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShiYWNrZW5kRGlzcGF0Y2hlciwgaWQpIHsgfQogCi12
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FM
QXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIHZhbHVlcywg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8aW50PiogZGF0
YWJhc2VJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJy
b3I+IHNxbEVycm9yLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5nPiog
c2NyZWVuQ29sb3IsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBw
cmludENvbG9yKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nl
c3MoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5O
YW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNl
SWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxF
cnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9y
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKIHsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgaWYgKGNvbHVtbk5hbWVzKQpAQCAtMzM0LDE0ICszMzQsMTQgQEAg
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGUKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IG91dF9j
b2x1bW5OYW1lczsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4gb3V0X2NvbHVtbk5hbWVzOwogICAgIFN0cmluZyBvdXRfbm90ZXM7CiAgICAgZG91YmxlIG91
dF90aW1lc3RhbXA7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qgb3V0X3ZhbHVlczsK
ICAgICBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIG91dF9wYXlsb2FkOwotICAgIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpEYXRhYmFzZUlkIG91dF9kYXRhYmFzZUlkOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxF
cnJvcjsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyBvdXRfc2NyZWVuQ29sb3I7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkRh
dGFiYXNlSWQgb3V0X2RhdGFiYXNlSWQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xv
cjsKICAgICBtX2FnZW50LT5leGVjdXRlU1FMU3luYygmZXJyb3IsIGluX2RhdGFiYXNlSWQsIGlu
X3F1ZXJ5LCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRf
dmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0
X3NjcmVlbkNvbG9yLCAmb3V0X3ByaW50Q29sb3IpOwogCkBAIC0zNTMsMTUgKzM1MywxNSBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZQogICAgICAgICByZXN1bHQtPnNldFZhbHVlKEFTQ0lJTGl0
ZXJhbCgicGF5bG9hZCIpLCBvdXRfcGF5bG9hZCk7CiAgICAgICAgIHJlc3VsdC0+c2V0TnVtYmVy
KEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBvdXRfZGF0YWJhc2VJZCk7CiAgICAgICAgIHJl
c3VsdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgb3V0X3NxbEVycm9yKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUob3V0X3NjcmVl
bkNvbG9yKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRD
b2xvciIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUo
b3V0X3ByaW50Q29sb3IpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzY3JlZW5Db2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50
VmFsdWUob3V0X3NjcmVlbkNvbG9yKSk7CisgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgicHJpbnRDb2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNv
bnN0YW50VmFsdWUob3V0X3ByaW50Q29sb3IpKTsKICAgICB9CiAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgcmVzdWx0LnJlbGVhc2UoKSwgZXJyb3IpOwogfQog
CiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFz
eW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFBhc3NSZWZQdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKGJhY2tlbmREaXNwYXRj
aGVyLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCB2YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNl
SWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBz
cWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBwcmludENv
bG9yKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhl
Y3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMs
IGRvdWJsZSB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBT
dHJpbmcmIHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIGpzb25NZXNzYWdlLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVz
IiksIGNvbHVtbk5hbWVzKTsKQEAgLTM3MSw4ICszNzEsOCBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2Vu
ZFN1YwogICAgIGpzb25NZXNzYWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwg
cGF5bG9hZCk7CiAgICAganNvbk1lc3NhZ2UtPnNldE51bWJlcihBU0NJSUxpdGVyYWwoImRhdGFi
YXNlSWQiKSwgZGF0YWJhc2VJZCk7CiAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInNxbEVycm9yIiksIHNxbEVycm9yKTsKLSAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0
VGVzdEVudW1Db25zdGFudFZhbHVlKHNjcmVlbkNvbG9yKSk7Ci0gICAganNvbk1lc3NhZ2UtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHByaW50Q29sb3IpKTsKKyAgICBqc29uTWVzc2Fn
ZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHNjcmVlbkNvbG9yKSk7CisgICAganNvbk1l
c3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHByaW50Q29sb3IpKTsKICAgICBzZW5k
SWZBY3RpdmUoanNvbk1lc3NhZ2UsIEVycm9yU3RyaW5nKCkpOwogfQogCkBAIC00NDUsNyArNDQ1
LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FM
QXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3AKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
LSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01MDgsNyArNTA4LDcgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgK
KyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
NTM5LDEzICs1MzksMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmluZSBJ
bnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3RvY29s
VHlwZXNfaAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC01NTMsNyArNTUzLDcgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFt
ZXNwYWNlIFByb3RvY29sIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKQEAgLTY1NCw3ICs2NTQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpT
dHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CisgICAgdHlwZWRlZiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CiB9OwogCiB9IC8vIERhdGFiYXNlCkBA
IC02NjIsMTYgKzY2MiwxNiBAQCBwdWJsaWM6CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVp
bGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlw
ZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBl
c19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTcwMyw3ICs3MDMsNyBA
QCBwdWJsaWM6CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAKQEAgLTcxMSw3ICs3MTEsNyBAQCBwdWJsaWM6CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsK
IAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiAg
ICAgInJlZCIsCkBAIC03MjksMTAgKzcyOSwxMCBAQCBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFu
dFZhbHVlKGludCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAv
LyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBl
QnVpbGRlcnMuY3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVy
cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQKaW5kZXggY2RmYjM1ZjhmZTZiMzExZjAyNmQxMmY4NzRiMWY4Mjg1MDQ4
MGY1Yi4uODg4MmYzODhlMmIxMTk2NzMyZTA4NDU2OTdmZGY0MGVlYTg5MzcwMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CkBAIC03MSw3ICs3MSw3IEBAIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5k
KCJEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiLCBbeyJuYW1lCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5o
IgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTk2LDggKzk2LDgg
QEAgcHVibGljOgogICAgICAgICBZZWxsb3cgPSA1LAogICAgICAgICBCbGFjayA9IDYsCiAgICAg
fTsgLy8gZW51bSBjbGFzcyBQcmludENvbG9yCi0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheT4qIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBj
b25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiogaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBp
bl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVl
bkNvbG9yLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2Ny
ZWVuQ29sb3IsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmlu
dENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3Rl
cywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQs
IGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgU3Ry
aW5nJiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0
X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVy
cm9yLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0
X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5PiogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90
ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+KiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5f
c2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRf
b3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJp
bnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4m
IGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0
YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBpbl92YWx1ZXMs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGluX3NxbEVycm9yLCBj
b25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3Is
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5h
bWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSog
b3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikg
PSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCk7CiB9OwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhs
b25nIGNhbGxJCiAgICAgYm9vbCBub3Rlc192YWx1ZUZvdW5kID0gZmFsc2U7CiAgICAgU3RyaW5n
IGluX25vdGVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXND
b250YWluZXJQdHIsIEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgJm5vdGVzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzUHRyKTsKICAgICBib29sIHRpbWVzdGFtcF92YWx1ZUZvdW5kID0gZmFsc2U7
Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGRvdWJsZT4gaW5fdGltZXN0
YW1wID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE51bWJlcihwYXJhbXNDb250YWlu
ZXJQdHIsIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFsdWVGb3VuZCwg
cHJvdG9jb2xFcnJvcnNQdHIpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxk
b3VibGU+IGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXROdW1i
ZXIocGFyYW1zQ29udGFpbmVyUHRyLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmdGltZXN0
YW1wX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzUHRyKTsKICAgICBib29sIHZhbHVlc192YWx1
ZUZvdW5kID0gZmFsc2U7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBp
bl92YWx1ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0Nv
bnRhaW5lclB0ciwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgJnZhbHVlc192YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9yc1B0cik7CiAgICAgYm9vbCBwYXlsb2FkX3ZhbHVlRm91bmQgPSBmYWxzZTsK
QEAgLTIyNywxNCArMjI3LDE0IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAKICAgICBFcnJv
clN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1uTmFtZXM7Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6T3B0T3V0cHV0PFN0cmluZz4gb3V0X25vdGVzOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6Ok9wdE91dHB1dDxkb3VibGU+IG91dF90aW1lc3RhbXA7Ci0gICAgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBvdXRfdmFs
dWVzOwotICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkRhdGFiYXNlSWQ+IG91
dF9kYXRhYmFzZUlkOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRhYmFz
ZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91dF9jb2x1bW5OYW1lczsKKyAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiBvdXRfbm90ZXM7CisgICAgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gb3V0X3RpbWVzdGFtcDsKKyAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG91dF92
YWx1ZXM7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWU+IG91dF9wYXlsb2FkOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2VJZD4gb3V0X2RhdGFi
YXNlSWQ7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4g
b3V0X3NxbEVycm9yOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5
Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBtX2FnZW50LT5l
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKCZlcnJvciwgY29sdW1uTmFtZXNfdmFsdWVGb3Vu
ZCA/ICZpbl9jb2x1bW5OYW1lcyA6IG51bGxwdHIsIG5vdGVzX3ZhbHVlRm91bmQgPyAmaW5fbm90
ZXMgOiBudWxscHRyLCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA/ICZpbl90aW1lc3RhbXAgOiBudWxs
cHRyLCB2YWx1ZXNfdmFsdWVGb3VuZCA/ICZpbl92YWx1ZXMgOiBudWxscHRyLCBwYXlsb2FkX3Zh
bHVlRm91bmQgPyAmaW5fcGF5bG9hZCA6IG51bGxwdHIsIGRhdGFiYXNlSWRfdmFsdWVGb3VuZCA/
ICZpbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgc3FsRXJyb3JfdmFsdWVGb3VuZCA/ICZpbl9zcWxF
cnJvciA6IG51bGxwdHIsIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPyAmaW5fc2NyZWVuQ29sb3Ig
OiBudWxscHRyLCBwcmludENvbG9yX3ZhbHVlRm91bmQgPyAmaW5fcHJpbnRDb2xvciA6IG51bGxw
dHIsIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1
ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2Ny
ZWVuQ29sb3IsICZvdXRfcHJpbnRDb2xvcik7CiAKQEAgLTI4NCwxNCArMjg0LDE0IEBAIHZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJh
bWV0ZXJzKGxvbmcgY2FsbElkCiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBvdXRfY29sdW1u
TmFtZXM7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IG91
dF9jb2x1bW5OYW1lczsKICAgICBTdHJpbmcgb3V0X25vdGVzOwogICAgIGRvdWJsZSBvdXRfdGlt
ZXN0YW1wOwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IG91dF92YWx1ZXM7CiAgICAg
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBvdXRfcGF5bG9hZDsKLSAgICBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2VJZCBvdXRfZGF0YWJhc2VJZDsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7
Ci0gICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0
X3NjcmVlbkNvbG9yOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFz
ZUlkIG91dF9kYXRhYmFzZUlkOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAg
ICAgbV9hZ2VudC0+ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKCZlcnJvciwgaW5fY29sdW1u
TmFtZXMsIGluX25vdGVzLCBpbl90aW1lc3RhbXAsIGluX3ZhbHVlcywgaW5fcGF5bG9hZCwgaW5f
ZGF0YWJhc2VJZCwgaW5fc3FsRXJyb3IsIGluX3NjcmVlbkNvbG9yLCBpbl9wcmludENvbG9yLCBv
dXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAm
b3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNv
bG9yLCAmb3V0X3ByaW50Q29sb3IpOwogCkBAIC0zMDMsOCArMzAzLDggQEAgdm9pZCBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMo
bG9uZyBjYWxsSWQKICAgICAgICAgcmVzdWx0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxv
YWQiKSwgb3V0X3BheWxvYWQpOwogICAgICAgICByZXN1bHQtPnNldE51bWJlcihBU0NJSUxpdGVy
YWwoImRhdGFiYXNlSWQiKSwgb3V0X2RhdGFiYXNlSWQpOwogICAgICAgICByZXN1bHQtPnNldE9i
amVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG91dF9zcWxFcnJvcik7Ci0gICAgICAgIHJl
c3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9zY3JlZW5Db2xvcikpOwot
ICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9wcmludENv
bG9yKSk7CisgICAgICAgIHJlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29s
b3IiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKG91dF9z
Y3JlZW5Db2xvcikpOworICAgICAgICByZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInBy
aW50Q29sb3IiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVl
KG91dF9wcmludENvbG9yKSk7CiAgICAgfQogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRS
ZXNwb25zZShjYWxsSWQsIHJlc3VsdC5yZWxlYXNlKCksIGVycm9yKTsKIH0KQEAgLTM1Miw3ICsz
NTIsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQxNSw3ICs0MTUsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNw
YXRjaGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMu
aAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC00NDYsMTMgKzQ0NiwxMyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElU
IFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13
aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbgogLy8gYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3Bl
Y3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RUeXBlQnVp
bGRlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5kZWYgSW5z
cGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJvdG9jb2xU
eXBlc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclR5
cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9jb2xUeXBl
cy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBA
IC00NjAsNyArNDYwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1lc3BhY2Ug
VHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogLy8gRm9yd2FyZCBkZWNsYXJh
dGlvbnMuCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKQEAgLTU2MSw3ICs1NjEsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CisgICAgdHlwZWRl
ZiBJbnNwZWN0b3I6OlByb3RvY29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CiB9Owog
CiB9IC8vIERhdGFiYXNlCkBAIC01NjksMTYgKzU2OSwxNiBAQCBwdWJsaWM6CiAKIAogCi19IC8v
IG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jZW5k
aWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oKQotIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9j
b2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNw
cAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTYxMCw3ICs2MTAsNyBAQCBwdWJsaWM6CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LWJpbmRpbmdzLnB5CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JU
ZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMu
aCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKQEAgLTYxOCw3ICs2MTgsNyBAQCBwdWJsaWM6
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFt
ZXNwYWNlIFByb3RvY29sIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3Rh
bnRfdmFsdWVzW10gPSB7CiAgICAgInJlZCIsCkBAIC02MzYsMTAgKzYzNiwxMCBAQCBTdHJpbmcg
Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFj
ZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6
IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdAppbmRleCA0NjI4YTdmOWM4ZGNkOWE4NWViZDliZWVmZmZkOTJiYWEwODRhNTc2
Li5hN2VhNzhiNDIxYzFjMjhjMDRhZjJjOGUxYzFmMGVhNTM4MGNjOTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9t
YWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13
aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdApAQCAtNzgsNyArNzgsNyBAQCBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiTmV0d29yazMubG9hZFJlc291cmNlNyIs
IFtdLCBbXSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVz
LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQzMiw3ICs0
MzIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JU
ZXN0RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5
cGVzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC00NjMsMTMgKzQ2MywxMyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBkb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24KIC8vIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JUZXN0VHlw
ZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCisjaWZuZGVm
IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yVGVzdFByb3Rv
Y29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3RvY29s
VHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IApAQCAtNDc3LDcgKzQ3Nyw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotbmFtZXNw
YWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIAogCkBAIC00OTcsMTYg
KzQ5NywxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFu
dFZhbHVlKFQgZW51bVZhbHVlKQogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30g
Ly8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVy
cy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaCkKKyMj
IyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogCi0jIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MzgsNyArNTM4LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1
ZSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIApAQCAtNTQ2LDcgKzU0Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBnZXRU
ZXN0RW51bUNvbnN0YW50VmFsdWUoVCBlbnVtVmFsdWUpCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiB9OwpAQCAt
NTU3LDEwICs1NTcsMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29k
ZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFBy
b3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAor
IyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9l
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9w
dGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggOThlYWM2YjFiOWVmNDVhZmMyY2Vh
ZDZhY2FlNjc3NjM1ODExZTBhZi4uZWIxNmU0ZDk2ZjMwYjNhZTdkZDhhNGE2NDg4MjcxZjFlNGQ1
ZThmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTcx
LDcgKzcxLDcgQEAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KCJEYXRhYmFzZS5kaWRF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiLCBbImNvbHUKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTczLDcgKzE3Myw3IEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xU
eXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTE4Nyw4ICsxODcsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNs
YXNzIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBJ
bnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQotICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlv
bmFsUGFyYW1ldGVycyhQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0
cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3Vi
bGUqIGNvbnN0IHRpbWVzdGFtcCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gdmFsdWVzLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OkVycm9yPiBzcWxF
cnJvciwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMqIGNvbnN0IHNjcmVlbkNvbG9yLCBjb25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29sb3IpOwot
ICAgIHZvaWQgZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmlu
ZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlcywgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBw
YXlsb2FkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJv
cj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKKyAgICB2
b2lkIGRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBu
b3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlPiBwYXlsb2FkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nKiBjb25zdCBwcmlu
dENvbG9yKTsKKyAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25z
dCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4gcGF5bG9hZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycyYgc2NyZWVuQ29sb3IsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CiBwcml2
YXRlOgogICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWw7CiB9OwpAQCAtMjQyLDcgKzI0Miw3IEBAIHByaXZhdGU6CiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi12b2lkIEluc3BlY3RvckRhdGFiYXNl
RnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29sb3Is
IGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3Qg
U3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgY29uc3QgU3Ry
aW5nKiBjb25zdCBwcmludENvbG9yKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGpz
b25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+
c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2Uu
ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFBhc3NSZWZQdAogICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5zZW5k
TWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgY29u
c3QgU3RyaW5nJiBwcmludENvbG9yKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlz
cGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYg
bm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IHZhbHVlcywgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBwYXls
b2FkLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3Fs
RXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
JiBzY3JlZW5Db2xvciwgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJ
TGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwpAQCAt
MjkzLDcgKzI5Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6
OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhQYXNzUmVmCiAKICMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJ
bnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0
UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzI0LDEzICszMjQsMTMgQEAgdm9pZCBJbnNwZWN0
b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzKFBhc3NSZWYKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24KIC8v
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0
b3JUZXN0VHlwZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19o
CisjaWZuZGVmIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JK
U1Byb3RvY29sVHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIApAQCAtMzM4LDcgKzMzOCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAK
IAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIC8vIEZv
cndhcmQgZGVjbGFyYXRpb25zLgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC00MzQsNyAr
NDM0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNT
ZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQotICAgIHR5
cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRz
OworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRyYWl0cyBJdGVt
VHJhaXRzOwogfTsKIAogfSAvLyBEYXRhYmFzZQpAQCAtNDQyLDE2ICs0NDIsMTYgQEAgcHVibGlj
OgogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3Rv
Y29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkK
LSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRl
ZmluZWQoSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVj
dG9yVGVzdFByb3RvY29sVHlwZXMuaAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5
cGVCdWlsZGVycy5jcHAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBl
cy5jcHAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC00ODMsNyArNDgzLDcgQEAgcHVibGljOgogLy8gYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3Bl
Y3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQ
cm90b2NvbFR5cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC00OTEsNyArNDkx
LDcgQEAgcHVibGljOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5cGVC
dWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBlbnVtX2NvbnN0YW50X3ZhbHVlc1tdID0gewogfTsKQEAgLTUwMiwxMCArNTAyLDEwIEBAIFN0
cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogCiAKLX0gLy8gbmFt
ZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSMjIyBFbmQg
RmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBFbmQgRmlsZTogSW5zcGVj
dG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVu
dC1kb21haW4uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1y
ZXN1bHQKaW5kZXggYzhhMGQ1ZThhOTNhYTVlN2UzMDAwNGJmMzk4ZTRjZWU0NDhjNjQ5YS4uNTQy
MTU1NDY4YWZmYzMwNGMxZWVjNTE3OTQ1NjZiY2VmOTY2NDVhMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlw
ZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVy
ZW50LWRvbWFpbi5qc29uLXJlc3VsdApAQCAtNjYsNyArNjYsNyBAQAogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNjgsNyArMTY4LDcgQEAgbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90
b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtMjMxLDcgKzIzMSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAog
Ci0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4g
RmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2MiwxMyArMjYy
LDEzIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNhbWUtdHlwZS1pZC1kaWZmZXJlbnQt
ZG9tYWluLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAot
I2lmbmRlZiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVz
dFR5cGVCdWlsZGVyc19oCisjaWZuZGVmIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNk
ZWZpbmUgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JKU1Byb3RvY29sVHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yUHJvdG9jb2xUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtMjc2LDcgKzI3Niw3IEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiAKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90
b2NvbCB7CiAKIAogCkBAIC0zMDEsMTYgKzMwMSwxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBT
dHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKFQgZW51bVZhbHVlKQogCiAKIAotfSAvLyBu
YW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29s
VHlwZXMuaAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAK
KyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC0zNDIsNyArMzQyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIGdldFRlc3RFbnVt
Q29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wt
YmluZGluZ3MucHkKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRl
c3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5o
IgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtMzUwLDcgKzM1MCw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFN0cmluZyBnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoVCBlbnVtVmFsdWUp
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFt
ZXNwYWNlIFByb3RvY29sIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3Rh
bnRfdmFsdWVzW10gPSB7CiB9OwpAQCAtMzYxLDEwICszNjEsMTAgQEAgU3RyaW5nIGdldFRlc3RF
bnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1
aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0
b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9j
b2xUeXBlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNv
bi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4
IGQxYWU0ZTgwYjQyYzk1ODc2MDI0MGVkNmQ3ZDVlYWRlZDlhZTExZjguLmQ5ZGIxM2Y5YWVhZjE3
MzVmM2YxYWQ2YTkyMjJiNjY1NWMzYjZhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10
eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVy
cy5qc29uLXJlc3VsdApAQCAtNjYsNyArNjYsNyBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNjgsNyArMTY4LDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVz
LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgpAQCAtMjMxLDcgKzIzMSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjIyMg
RW5kIEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogCi0jIyMgQmVn
aW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5z
cGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2MiwxMyArMjYyLDEzIEBAIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYg
SW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCi0jZGVmaW5lIEluc3BlY3RvclRlc3RUeXBlQnVp
bGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oCisjZGVmaW5lIElu
c3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaD4KLSNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclBy
b3RvY29sVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAogCiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewog
CiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KIG5hbWVzcGFjZSBSdW50aW1lIHsKQEAgLTMzMSw3
ICszMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBUeXBlU2V0PiYgc2V0
VHlwZShUeXBlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCgh
KFNUQVRFICYgVHlwZVNldCksIHByb3BlcnR5X3R5cGVfYWxyZWFkeV9zZXQpOwotICAgICAgICAg
ICAgbV9yZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInR5cGUiKSwgSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKHN0YXRpY19jYXN0PGludD4odmFs
dWUpKSk7CisgICAgICAgICAgICBtX3Jlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidHlw
ZSIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRUZXN0RW51bUNvbnN0YW50VmFsdWUoc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8VHlwZVNl
dD4oKTsKICAgICAgICAgfQogCkBAIC0zNTcsMTQgKzM1NywxNCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CisgICAgdHlwZWRlZiBJbnNwZWN0b3I6
OlByb3RvY29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CiAKICAgICB2b2lkIHNldFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic3RyaW5nIiksIHZhbHVlKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldEFycmF5KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4gdmFsdWUpCisgICAgdm9pZCBzZXRBcnJheShQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQogICAgIHsKICAgICAgICAgSW5zcGVj
dG9yT2JqZWN0QmFzZTo6c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhcnJheSIpLCB2YWx1ZSk7CiAg
ICAgfQpAQCAtMzc0LDE2ICszNzQsMTYgQEAgcHVibGljOgogCiAKIAotfSAvLyBuYW1lc3BhY2Ug
VHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFByb3Rv
Y29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaAog
Ci0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBCZWdp
biBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC00MTUsNyAr
NDE1LDcgQEAgcHVibGljOgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWls
ZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogCkBAIC00MjMsNyArNDIzLDcgQEAgcHVibGljOgogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90
b2NvbCB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0YW50X3ZhbHVlc1td
ID0gewogICAgICJudWxsIiwKQEAgLTQzNywxMCArNDM3LDEwIEBAIFN0cmluZyBnZXRUZXN0RW51
bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWls
ZGVyCit9IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29s
VHlwZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10
eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5q
c29uLXJlc3VsdAppbmRleCBkNDU2Y2U0NTMxZTM1YTQ4MGMzYjc3OWNkZjA5OGRjZjFiOGM2MDUy
Li41ZjE1NmRjZDk4NmUwNzc0M2Y3NjgxNWZlYTE2YjAzY2M0ZTQ2ZGVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKQEAgLTY2LDcg
KzY2LDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JU
ZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMu
aCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMTY4LDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTIzMSw3ICsyMzEs
NyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RU
eXBlQnVpbGRlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVz
LmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCkBAIC0yNjIsMTMgKzI2MiwxMyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSB0eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbgogLy8gYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvclRlc3RU
eXBlQnVpbGRlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzX2gKKyNpZm5k
ZWYgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAorI2RlZmluZSBJbnNwZWN0b3JUZXN0UHJv
dG9jb2xUeXBlc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvclR5cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTUHJvdG9j
b2xUeXBlcy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogCkBAIC0yNzYsNyArMjc2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1uYW1l
c3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogCiAKQEAgLTI5Niwx
NiArMjk2LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBnZXRUZXN0RW51bUNvbnN0
YW50VmFsdWUoVCBlbnVtVmFsdWUpCiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgor
fSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9y
VGVzdFR5cGVCdWlsZGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxk
ZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oKQor
IyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBG
aWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6IEluc3Bl
Y3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTMzNyw3ICszMzcsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKFQgZW51bVZh
bHVlKQogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogCkBAIC0zNDUsNyArMzQ1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU3RyaW5nIGdl
dFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShUIGVudW1WYWx1ZSkKIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2UgUHJvdG9jb2wgewogCiBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFudF92YWx1ZXNbXSA9IHsKIH07CkBA
IC0zNTYsMTAgKzM1NiwxMCBAQCBTdHJpbmcgZ2V0VGVzdEVudW1Db25zdGFudFZhbHVlKGludCBj
b2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2Ug
UHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3Bw
CisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LWFycmF5LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggNzg3ZmY0ZGVhOWU3ZjA0MTVlYmI4ZjNhOTI2
YTY3N2RlOTE1OTNhZS4uMjg4YzhkOWM5MzFiN2JkMDE1ZGUzOGRiM2M0MjM2ZWFmYWJhMTkwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC02OSw3ICs2OSw3IEBAIElu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJEZWJ1Z2dlci5SZWFzb24iLCB7RGllZDogIkRp
ZWQiLCBGYWludGVkOiAiRmFpbnRlCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQ
cm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTE3MSw3ICsxNzEsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1
aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC0yMzQsNyArMjM0LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yVGVzdEZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBJ
bnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0
UHJvdG9jb2xUeXBlcy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjY1LDEzICsyNjUsMTMgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24KIC8vIGJ5IHRo
ZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0
ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JUZXN0
VHlwZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCisjaWZu
ZGVmIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9yVGVzdFBy
b3RvY29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU1Byb3Rv
Y29sVHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIApAQCAtMjc5LDcgKzI3OSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotbmFt
ZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIC8vIEZvcndhcmQg
ZGVjbGFyYXRpb25zLgogbmFtZXNwYWNlIERlYnVnZ2VyIHsKQEAgLTMxNiwxNiArMzE2LDE2IEBA
IGVudW0gY2xhc3MgUmVhc29uIHsKIAogCiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9
IC8vIG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JU
ZXN0VHlwZUJ1aWxkZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRl
cnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gpCisj
IyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIAotIyMjIEJlZ2luIEZp
bGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yVGVzdFByb3RvY29sVHlwZXMuY3BwCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzU3LDcgKzM1Nyw3IEBAIGVudW0g
Y2xhc3MgUmVhc29uIHsKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRl
cnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIApAQCAtMzY1LDcgKzM2NSw3IEBAIGVudW0gY2xhc3MgUmVhc29uIHsK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1l
c3BhY2UgUHJvdG9jb2wgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFu
dF92YWx1ZXNbXSA9IHsKICAgICAiRGllZCIsCkBAIC0zNzksMTAgKzM3OSwxMCBAQCBTdHJpbmcg
Z2V0VGVzdEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFj
ZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6
IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRl
c3RQcm90b2NvbFR5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBl
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4
IGRlYWU1NWM5ZGM1YTFkOGFlOTI3OTBhNzgwZWRiNzIyNDRiNmYzY2QuLjZhODJiZGU3MDA2NmU2
OTFlNjMxNmRhYmEwNWQ2NDM2NGZhNWY2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVu
dW0tdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1y
ZXN1bHQKQEAgLTcwLDcgKzcwLDcgQEAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIlJ1
bnRpbWUuVHdvTGVnZ2VkQW5pbWFscyIsIHtEdWNrczogIkR1Y2tzIiwgSGVuczoKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTcyLDcgKzE3Miw3
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2lu
Y2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JU
ZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTIzNSw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNwYXRjaGVy
cy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorIyMj
IEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yNjYs
MTMgKzI2NiwxMyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9u
LWVudW0tdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5
CiAKLSNpZm5kZWYgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oCi0jZGVmaW5lIEluc3BlY3Rv
clRlc3RUeXBlQnVpbGRlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19o
CisjZGVmaW5lIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaD4K
LSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaD4KKyNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTI4MCw3ICsyODAsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogCiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3BhY2Ug
UHJvdG9jb2wgewogCiAvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KIG5hbWVzcGFjZSBSdW50aW1l
IHsKQEAgLTMxOCwxNiArMzE4LDE2IEBAIGVudW0gY2xhc3MgVHdvTGVnZ2VkQW5pbWFscyB7CiAK
IAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wK
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19oKQotIyMj
IEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JU
ZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1
aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNw
cAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KQEAgLTM1OSw3ICszNTksNyBAQCBlbnVtIGNsYXNzIFR3b0xlZ2dlZEFuaW1hbHMg
ewogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oIgorI2luY2x1
ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCkBAIC0zNjcsNyArMzY3LDcgQEAgZW51bSBjbGFzcyBUd29MZWdnZWRBbmltYWxzIHsKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLW5hbWVzcGFjZSBUeXBlQnVpbGRlciB7CituYW1lc3Bh
Y2UgUHJvdG9jb2wgewogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZW51bV9jb25zdGFudF92
YWx1ZXNbXSA9IHsKICAgICAiUGlncyIsCkBAIC0zODUsMTAgKzM4NSwxMCBAQCBTdHJpbmcgZ2V0
VGVzdEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBU
eXBlQnVpbGRlcgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jIyMgRW5kIEZpbGU6IElu
c3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuY3BwCisjIyMgRW5kIEZpbGU6IEluc3BlY3RvclRlc3RQ
cm90b2NvbFR5cGVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRl
eCA4NmJlOGVmYjU4MTEyYWI4MzQwZTcyMTQ5OGM5ZGM4ZTc1ZTczMjE2Li5lYTNkYjk3N2VmOWIx
Y2Y5MzcwZmZiNmNiNzg2ZGVlMmEwMWQ1NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1v
YmplY3QtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5q
c29uLXJlc3VsdApAQCAtNjYsNyArNjYsNyBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAot
I2luY2x1ZGUgIkluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNjgsNyArMTY4LDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVz
dFR5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgi
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgpAQCAtMjMxLDcgKzIzMSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjIyMgRW5k
IEZpbGU6IEluc3BlY3RvclRlc3RGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogCi0jIyMgQmVnaW4g
RmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yVGVzdFByb3RvY29sVHlwZXMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI2MiwxMyArMjYyLDEzIEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbgog
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3Bl
Y3RvclRlc3RUeXBlQnVpbGRlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJz
X2gKKyNpZm5kZWYgSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXNfaAorI2RlZmluZSBJbnNwZWN0
b3JUZXN0UHJvdG9jb2xUeXBlc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi0jaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclR5cGVCdWlsZGVyLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
ckpTUHJvdG9jb2xUeXBlcy5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JQcm90b2Nv
bFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCkBAIC0yNzYsNyArMjc2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IAogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAogLy8g
Rm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKQEAgLTM3MSw3
ICszNzEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxk
c1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAg
dHlwZWRlZiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFp
dHM7CisgICAgdHlwZWRlZiBJbnNwZWN0b3I6OlByb3RvY29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0
ZW1UcmFpdHM7CiB9OwogCiBjbGFzcyBPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSA6IHB1YmxpYyBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UgewpAQCAtNDIwLDkgKzQyMCw5IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVm
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKIAotICAg
IHZvaWQgc2V0Q29sdW1uTmFtZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+PiB2YWx1ZSkKKyAgICB2b2lkIHNldENvbHVtbk5hbWVzKFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCiAgICAgewogICAgICAg
ICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVz
IiksIHZhbHVlKTsKICAgICB9CkBAIC00NDcsNyArNDQ3LDcgQEAgcHVibGljOgogICAgICAgICBJ
bnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgdmFs
dWUpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RXJyb3IoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEYXRhYmFzZTo6RXJyb3I+IHZhbHVlKQorICAgIHZvaWQgc2V0RXJyb3IoUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHZhbHVlKQogICAg
IHsKICAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
ZXJyb3IiKSwgdmFsdWUpOwogICAgIH0KQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBQYXJhbWV0ZXJCdW5kbGU7CiAgICAgcHVibGljOgogCi0gICAgICAg
IEJ1aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCisgICAgICAg
IEJ1aWxkZXI8U1RBVEUgfCBDb2x1bW5OYW1lc1NldD4mIHNldENvbHVtbk5hbWVzKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gdmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBDb2x1bW5OYW1lc1NldCksIHBy
b3BlcnR5X2NvbHVtbk5hbWVzX2FscmVhZHlfc2V0KTsKICAgICAgICAgICAgIG1fcmVzdWx0LT5z
ZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIHZhbHVlKTsKQEAgLTUxOSw3ICs1
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPFBheWxvYWRTZXQ+
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyPFNUQVRFIHwgRXJyb3JTZXQ+JiBzZXRF
cnJvcihQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRhdGFiYXNlOjpFcnJvcj4g
dmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBFcnJvclNldD4mIHNldEVycm9yKFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiB2YWx1ZSkKICAgICAg
ICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIEVycm9yU2V0KSwgcHJv
cGVydHlfZXJyb3JfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1bHQtPnNldE9iamVj
dChBU0NJSUxpdGVyYWwoImVycm9yIiksIHZhbHVlKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9Ci0gICAgdHlwZWRlZiBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CisgICAgdHlwZWRl
ZiBJbnNwZWN0b3I6OlByb3RvY29sOjpTdHJ1Y3RJdGVtVHJhaXRzIEl0ZW1UcmFpdHM7CiB9Owog
CiAvKiBDb25mbGljdGVkIG5hbWVzIG1heSBjYXVzZSBnZW5lcmF0ZWQgZ2V0dGVycy9zZXR0ZXJz
IHRvIGNsYXNoIHdpdGggYnVpbHQtaW4gSW5zcGVjdG9yT2JqZWN0IG1ldGhvZHMuICovCkBAIC02
NDgsNyArNjQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQot
ICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVt
VHJhaXRzOworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRyYWl0
cyBJdGVtVHJhaXRzOwogfTsKIAogfSAvLyBEYXRhYmFzZQpAQCAtNjg2LDcgKzY4Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFBhcmFtZXRlckJ1bmRsZTsKICAgICBwdWJsaWM6
CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvbHVtbk5hbWVzU2V0PiYgc2V0Q29sdW1uTmFt
ZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiB2YWx1
ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IENvbHVtbk5hbWVzU2V0PiYgc2V0Q29sdW1uTmFt
ZXMoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiB2YWx1ZSkK
ICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoIShTVEFURSAmIENvbHVtbk5h
bWVzU2V0KSwgcHJvcGVydHlfY29sdW1uTmFtZXNfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAg
bV9yZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgdmFsdWUpOwpA
QCAtNzIxLDcgKzcyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8
UGF5bG9hZFNldD4oKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBFcnJv
clNldD4mIHNldEVycm9yKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGF0YWJh
c2U6OkVycm9yPiB2YWx1ZSkKKyAgICAgICAgQnVpbGRlcjxTVEFURSB8IEVycm9yU2V0PiYgc2V0
RXJyb3IoUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgRXJy
b3JTZXQpLCBwcm9wZXJ0eV9lcnJvcl9hbHJlYWR5X3NldCk7CiAgICAgICAgICAgICBtX3Jlc3Vs
dC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgdmFsdWUpOwpAQCAtNzU1LDIzICs3
NTUsMjMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNT
ZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQotICAgIHR5
cGVkZWYgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6U3RydWN0SXRlbVRyYWl0cyBJdGVtVHJhaXRz
OworICAgIHR5cGVkZWYgSW5zcGVjdG9yOjpQcm90b2NvbDo6U3RydWN0SXRlbVRyYWl0cyBJdGVt
VHJhaXRzOwogfTsKIAogfSAvLyBUZXN0CiAKIAogCi19IC8vIG5hbWVzcGFjZSBUeXBlQnVpbGRl
cgorfSAvLyBuYW1lc3BhY2UgUHJvdG9jb2wKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1
aWxkZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlc19o
KQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oCiAKLSMjIyBCZWdp
biBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNwcAorIyMjIEJlZ2luIEZpbGU6IElu
c3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmNwcAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgwMyw3ICs4MDMsNyBAQCBw
dWJsaWM6CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuaCIKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKQEAgLTgxMSw3ICs4MTEsNyBAQCBwdWJsaWM6CiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCi1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgeworbmFtZXNwYWNlIFByb3RvY29sIHsKIAog
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVudW1fY29uc3RhbnRfdmFsdWVzW10gPSB7CiB9OwpA
QCAtODIyLDEwICs4MjIsMTAgQEAgU3RyaW5nIGdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShpbnQg
Y29kZSkgewogCiAKIAotfSAvLyBuYW1lc3BhY2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNl
IFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKIAotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmNw
cAorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggOWQ0ZmVhYjI1MDI2NGNhNmZlNGRhNGVk
YjhjODQ5ZmQ3MzI5NTg1Yi4uMWVmMTNjNzIwNTQ1NmIwM2M4YWExYzNkMjQ2Y2VkNTExMzRhNGZl
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTcwLDcgKzcwLDcg
QEAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIlRlc3QuQ2FzdGVkQW5pbWFscyIsIHtE
dWNrczogIkR1Y2tzIiwgSGVuczogIkhlbnMKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNp
bmNsdWRlICJJbnNwZWN0b3JUZXN0VHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTcyLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvclRlc3RU
eXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5oIgog
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTIzNSw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBG
aWxlOiBJbnNwZWN0b3JUZXN0RnJvbnRlbmREaXNwYXRjaGVycy5jcHAKIAotIyMjIEJlZ2luIEZp
bGU6IEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rv
clRlc3RQcm90b2NvbFR5cGVzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yNjYsMTMgKzI2NiwxMyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24KIC8v
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0
b3JUZXN0VHlwZUJ1aWxkZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVyc19o
CisjaWZuZGVmIEluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgSW5zcGVjdG9y
VGVzdFByb3RvY29sVHlwZXNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUg
PGluc3BlY3Rvci9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JK
U1Byb3RvY29sVHlwZXMuaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIApAQCAtMjgwLDcgKzI4MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAK
IAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVzcGFjZSBQcm90b2NvbCB7CiAKIC8vIEZv
cndhcmQgZGVjbGFyYXRpb25zLgogbmFtZXNwYWNlIFRlc3QgewpAQCAtMzU0LDEwICszNTQsMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxOdW1iZXJTZXQ+KCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyPFNUQVRFIHwgQW5pbWFsc1NldD4mIHNldEFuaW1h
bHMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6Q2FzdGVkQW5pbWFscyB2YWx1ZSkKKyAg
ICAgICAgQnVpbGRlcjxTVEFURSB8IEFuaW1hbHNTZXQ+JiBzZXRBbmltYWxzKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHMgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKCEoU1RBVEUgJiBBbmltYWxzU2V0KSwgcHJvcGVydHlfYW5pbWFs
c19hbHJlYWR5X3NldCk7Ci0gICAgICAgICAgICBtX3Jlc3VsdC0+c2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiYW5pbWFscyIpLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRUZXN0RW51bUNvbnN0
YW50VmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpKTsKKyAgICAgICAgICAgIG1fcmVzdWx0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJhbmltYWxzIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OmdldFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGNhc3RTdGF0ZTxBbmltYWxzU2V0PigpOwogICAgICAgICB9CiAKQEAg
LTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gY2FzdFN0YXRlPElk
U2V0PigpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcjxTVEFURSB8IFRyZWVTZXQ+JiBz
ZXRUcmVlKFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZl
T2JqZWN0MT4gdmFsdWUpCisgICAgICAgIEJ1aWxkZXI8U1RBVEUgfCBUcmVlU2V0PiYgc2V0VHJl
ZShQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYg
VHJlZVNldCksIHByb3BlcnR5X3RyZWVfYWxyZWFkeV9zZXQpOwogICAgICAgICAgICAgbV9yZXN1
bHQtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInRyZWUiKSwgdmFsdWUpOwpAQCAtNDAxLDcgKzQw
MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0
PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAgICB0eXBl
ZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsK
KyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRy
YWl0czsKIH07CiAKIC8qICAqLwpAQCAtNDY0LDkgKzQ2NCw5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOwogICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlN0cnVjdEl0ZW1UcmFpdHMgSXRlbVRyYWl0czsKIAotICAgIHZvaWQgc2V0T2Jq
KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0
Mj4gdmFsdWUpCisgICAgdm9pZCBzZXRPYmooUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3Rv
ck9iamVjdEJhc2U6OnNldE9iamVjdChBU0NJSUxpdGVyYWwoIm9iaiIpLCB2YWx1ZSk7CiAgICAg
fQpAQCAtNTE4LDkgKzUxOCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBCdWls
ZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwog
ICAgIH0KLSAgICB0eXBlZGVmIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlN0cnVjdEl0ZW1UcmFp
dHMgSXRlbVRyYWl0czsKKyAgICB0eXBlZGVmIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlN0cnVjdEl0
ZW1UcmFpdHMgSXRlbVRyYWl0czsKIAotICAgIHZvaWQgc2V0T2JqKFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT4gdmFsdWUpCisgICAgdm9p
ZCBzZXRPYmooUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVP
YmplY3QxPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldE9i
amVjdChBU0NJSUxpdGVyYWwoIm9iaiIpLCB2YWx1ZSk7CiAgICAgfQpAQCAtNTI4LDM4ICs1Mjgs
MzggQEAgcHVibGljOgogCiB9IC8vIFRlc3QKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiB7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNh
c3RlZEFuaW1hbHM+IHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgdm9pZCBhc3NlcnRW
YWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7CiAjZW5kaWYg
Ly8gIUFTU0VSVF9ESVNBQkxFRAogfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiB7Ci1zdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+
IHJ1bnRpbWVDYXN0KFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUp
OwordGVtcGxhdGU8PiBzdHJ1Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpU
ZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IHsKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gcnVudGltZUNhc3QoUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogc3Rh
dGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSopOwogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH07Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJlY3Vyc2l2ZU9i
amVjdDE+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90
b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT4gewogI2lmICFBU1NFUlRfRElTQUJMRUQKIHN0
YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWUqKTsKICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9OwotdGVtcGxhdGU8PiBzdHJ1
Y3QgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpSZWN1cnNpdmVP
YmplY3QyPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+IHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBz
dGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKik7CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogfTsKIAotfSAvLyBuYW1lc3Bh
Y2UgVHlwZUJ1aWxkZXIKK30gLy8gbmFtZXNwYWNlIFByb3RvY29sCiAKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAotI2VuZGlmIC8vICFk
ZWZpbmVkKEluc3BlY3RvclRlc3RUeXBlQnVpbGRlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVj
dG9yVGVzdFR5cGVCdWlsZGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yVGVzdFBy
b3RvY29sVHlwZXNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMu
aAogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVCdWlsZGVycy5jcHAKKyMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JUZXN0UHJvdG9jb2xUeXBlcy5jcHAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01OTEs
NyArNTkxLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSopOwogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGVzdFR5
cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRlc3RQcm90b2NvbFR5cGVzLmgiCiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC01OTksNyArNTk5LDcgQEAgc3RhdGljIHZvaWQg
YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSopOwog
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotbmFtZXNwYWNlIFR5cGVCdWlsZGVyIHsKK25hbWVz
cGFjZSBQcm90b2NvbCB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlbnVtX2NvbnN0YW50
X3ZhbHVlc1tdID0gewogICAgICJEdWNrcyIsCkBAIC02MTgsNyArNjE4LDcgQEAgU3RyaW5nIGdl
dFRlc3RFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAKICNpZiAhQVNTRVJUX0RJU0FC
TEVECi12b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6Q2Fz
dGVkQW5pbWFscz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUqIHZhbHVlKQordm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRlc3Q6OkNhc3RlZEFuaW1hbHM+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKIHsKICAgICBTdHJpbmcgczsKICAgICBib29sIGNh
c3RfcmVzID0gdmFsdWUtPmFzU3RyaW5nKCZzKTsKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6Q2FzdGVkQW5pbWFscz46
OmFzc2VydFZhbHVlSGFzRQogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIAogI2lmICFBU1NF
UlRfRElTQUJMRUQKLXZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
ZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKK3ZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVk
VHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0
KCZvYmplY3QpOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhCiAg
ICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGFuaW1hbHNQb3MgPSBvYmpl
Y3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJhbmltYWxzIikpOwogICAgICAgICBBU1NFUlQoYW5pbWFs
c1BvcyAhPSBvYmplY3QtPmVuZCgpKTsKLSAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUoYW5pbWFsc1Bvcy0+dmFsdWUuZ2V0KCkpOworICAgICAgICBCaW5kaW5nVHJhaXRzPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+Ojphc3NlcnRWYWx1ZUhhc0V4
cGVjdGVkVHlwZShhbmltYWxzUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHsKICAgICAg
ICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBpZFBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxp
dGVyYWwoImlkIikpOwpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhh
CiAgICAgewogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIHRyZWVQb3MgPSBvYmpl
Y3QtPmZpbmQoQVNDSUlMaXRlcmFsKCJ0cmVlIikpOwogICAgICAgICBBU1NFUlQodHJlZVBvcyAh
PSBvYmplY3QtPmVuZCgpKTsKLSAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUodHJlZVBvcy0+dmFsdWUuZ2V0KCkpOworICAgICAgICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0V4cGVj
dGVkVHlwZSh0cmVlUG9zLT52YWx1ZS5nZXQoKSk7CiAgICAgfQogCiAgICAgaW50IGZvdW5kUHJv
cGVydGllc0NvdW50ID0gNTsKQEAgLTY2NSwyMSArNjY1LDIxIEBAIHZvaWQgQmluZGluZ1RyYWl0
czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRW
YWx1ZUhhCiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCi1QYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gQmluZGluZ1RyYWl0czxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+OjpydW50aW1lQ2Fz
dChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQorUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IEJpbmRpbmdUcmFp
dHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6cnVudGltZUNh
c3QoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiB2YWx1ZSkKIHsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RS
ZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0UmVz
LCBjYXN0UmVzKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgQmluZGluZ1RyYWl0czxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhh
c0V4cGVjdGVkVHlwZShvYmplY3QuZ2V0KCkpOworICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3Rl
ZFR5cGUob2JqZWN0LmdldCgpKTsKICNlbmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxFRAotICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpUeXBlTmVl
ZGluZ0Nhc3QpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBl
X2Nhc3RfcHJvYmxlbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0QmFzZSo+KG9iamVjdC5nZXQoKSkpOworICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNpemVv
ZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVk
aW5nQ2FzdCo+KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KG9i
amVjdC5nZXQoKSkpOwogfQogCiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi12b2lkIEJpbmRpbmdU
cmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFz
c2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIHZhbHVl
KQordm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2
ZU9iamVjdDE+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKiB2YWx1ZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAg
ICAgYm9vbCBjYXN0UmVzID0gdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpOwpAQCAtNjg5LDcgKzY4
OSw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpS
ZWN1cnNpdmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVICiAgICAgewogICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6Oml0ZXJhdG9yIG9ialBvcyA9IG9iamVjdC0+ZmluZChBU0NJSUxpdGVyYWwoIm9iaiIp
KTsKICAgICAgICAgaWYgKG9ialBvcyAhPSBvYmplY3QtPmVuZCgpKSB7Ci0gICAgICAgICAgICBC
aW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVj
dDI+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShvYmpQb3MtPnZhbHVlLmdldCgpKTsKKyAg
ICAgICAgICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJz
aXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9ialBvcy0+dmFsdWUuZ2V0
KCkpOwogICAgICAgICAgICAgKytmb3VuZFByb3BlcnRpZXNDb3VudDsKICAgICAgICAgfQogICAg
IH0KQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSAogI2VuZGlmIC8v
ICFBU1NFUlRfRElTQUJMRUQKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLXZvaWQgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNz
ZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogdmFsdWUp
Cit2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZl
T2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWUqIHZhbHVlKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG9iamVjdDsKICAg
ICBib29sIGNhc3RSZXMgPSB2YWx1ZS0+YXNPYmplY3QoJm9iamVjdCk7CkBAIC03MDksNyArNzA5
LDcgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRlc3Q6OlJl
Y3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUgKICAgICB7CiAgICAgICAgIEluc3BlY3Rvck9i
amVjdDo6aXRlcmF0b3Igb2JqUG9zID0gb2JqZWN0LT5maW5kKEFTQ0lJTGl0ZXJhbCgib2JqIikp
OwogICAgICAgICBpZiAob2JqUG9zICE9IG9iamVjdC0+ZW5kKCkpIHsKLSAgICAgICAgICAgIEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0
MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKG9ialBvcy0+dmFsdWUuZ2V0KCkpOworICAg
ICAgICAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNp
dmVPYmplY3QxPjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUob2JqUG9zLT52YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICArK2ZvdW5kUHJvcGVydGllc0NvdW50OwogICAgICAgICB9CiAgICAg
fQpAQCAtNzE4LDEwICs3MTgsMTAgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+Ojphc3NlcnRWYWx1ZUgKIH0KICNlbmRp
ZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAKLX0gLy8gbmFtZXNwYWNlIFR5cGVCdWlsZGVyCit9IC8v
IG5hbWVzcGFjZSBQcm90b2NvbAogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFR5cGVC
dWlsZGVycy5jcHAKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yVGVzdFByb3RvY29sVHlwZXMuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAppbmRl
eCA2MjRkN2NhNzZkZWJmMDhmNWVmNGUyY2IwNGI5ZjkyNTVkNDI1ZmRiLi40MzZkYzFmNjEyNjA3
MjFjODEzMzdhNWI4MmUwOGJiM2Q2OWVjYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKIAotI2luY2x1ZGUgIkluc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgi
CiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjUsNyAr
NjUsNyBAQCB2b2lkIFR5cGVQcm9maWxlcjo6aW5zZXJ0TmV3TG9jYXRpb24oVHlwZUxvY2F0aW9u
KiBsb2NhdGlvbikKICAgICBidWNrZXQuYXBwZW5kKGxvY2F0aW9uKTsKIH0KIAotdm9pZCBUeXBl
UHJvZmlsZXI6OmdldFR5cGVzRm9yVmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJf
dCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlR5cGVE
ZXNjcmlwdGlvbj4mIGRlc2NyaXB0aW9uKQordm9pZCBUeXBlUHJvZmlsZXI6OmdldFR5cGVzRm9y
VmFyaWFibGVBdE9mZnNldEZvckluc3BlY3RvcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9y
IGRlc2NyaXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mIGRlc2NyaXB0aW9u
KQogewogICAgIFR5cGVMb2NhdGlvbiogbG9jYXRpb24gPSBmaW5kTG9jYXRpb24oZGl2b3QsIHNv
dXJjZUlELCBkZXNjcmlwdG9yKTsKICAgICBpZiAoIWxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuaAppbmRleCBhYjdmZDdhZjBkNDI1NGRjOGI1
NWI3ZGU3ZWFkZjFkM2ZlNWU4MWM4Li5lNmMzODcxYmJjMmIyYjIxMjc0OWQxMTgxZmY0ZWQ4ZjEy
YTNiNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIu
aApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7IG5hbWVzcGFjZSBU
eXBlQnVpbGRlciAgeyBuYW1lc3BhY2UgUnVudGltZSB7CituYW1lc3BhY2UgSW5zcGVjdG9yIHsg
bmFtZXNwYWNlIFByb3RvY29sICB7IG5hbWVzcGFjZSBSdW50aW1lIHsKIGNsYXNzIFR5cGVEZXNj
cmlwdGlvbjsKIH19fQogCkBAIC05NSw3ICs5NSw3IEBAIGVudW0gVHlwZVByb2ZpbGVyU2VhcmNo
RGVzY3JpcHRvciB7CiBjbGFzcyBUeXBlUHJvZmlsZXIgewogcHVibGljOgogICAgIHZvaWQgbG9n
VHlwZXNGb3JUeXBlTG9jYXRpb24oVHlwZUxvY2F0aW9uKik7Ci0gICAgdm9pZCBnZXRUeXBlc0Zv
clZhcmlhYmxlQXRPZmZzZXRGb3JJbnNwZWN0b3IoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRv
ciwgdW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPiYpOworICAgIHZvaWQgZ2V0VHlw
ZXNGb3JWYXJpYWJsZUF0T2Zmc2V0Rm9ySW5zcGVjdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2Ny
aXB0b3IsIHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4mKTsKICAgICB2b2lkIGluc2Vy
dE5ld0xvY2F0aW9uKFR5cGVMb2NhdGlvbiopOwogICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZSogZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkgeyByZXR1cm4gJm1fZnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlOyB9CiAgICAgVHlwZUxvY2F0aW9uQ2FjaGUqIHR5cGVMb2NhdGlvbkNhY2hlKCkg
eyByZXR1cm4gJm1fdHlwZUxvY2F0aW9uQ2FjaGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNjJiNWExZDQyNTExZTI5MDk1MzgxNmNhZWY2ZTM2N2Vh
ZWMwNzNjZC4uM2FiZjRlZGFiOGJkODk4NGI5MDAwZjZkMTE5NWMzOWZkMDJiZjQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUeXBlU2V0LmgiCiAKLSNpbmNsdWRlICJJ
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTUHJvdG9jb2xU
eXBlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTIxMyw5ICsyMTMsOSBA
QCBTdHJpbmcgVHlwZVNldDo6ZGlzcGxheU5hbWUoKSBjb25zdAogICAgIHJldHVybiAiKG1hbnkp
IjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
PiBUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBlTmFtZXMoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBl
TmFtZXMoKSBjb25zdAogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+PiBzZWVuID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+
IHNlZW4gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAg
ICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKQogICAgICAgICAgc2Vlbi0+YWRkSXRl
bSgiVW5kZWZpbmVkIik7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpCkBAIC0yMzIs
OSArMjMyLDkgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiBUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBlTmFtZXMKICAgICByZXR1cm4gc2Vlbi5yZWxl
YXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+PiBUeXBl
U2V0OjphbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdAorUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1
Y3R1cmVEZXNjcmlwdGlvbj4+IFR5cGVTZXQ6OmFsbFN0cnVjdHVyZVJlcHJlc2VudGF0aW9ucygp
IGNvbnN0CiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPj4gZGVzY3Jp
cHRpb24gPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj46OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4+IGRlc2NyaXB0aW9uID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRp
b24+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVI
aXN0b3J5LnNpemUoKTsgaSsrKQogICAgICAgICBkZXNjcmlwdGlvbi0+YWRkSXRlbShtX3N0cnVj
dHVyZUhpc3RvcnkuYXQoaSktPmluc3BlY3RvclJlcHJlc2VudGF0aW9uKCkpOwpAQCAtMzYwLDE0
ICszNjAsMTQgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbigp
CiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uLnRvU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IFN0
cnVjdHVyZVNoYXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpCitQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVT
aGFwZTo6aW5zcGVjdG9yUmVwcmVzZW50YXRpb24oKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gYmFzZSA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uOjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3RydWN0dXJl
RGVzY3JpcHRpb24+IGN1cnJlbnRPYmplY3QgPSBiYXNlOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gYmFzZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRp
b24+IGN1cnJlbnRPYmplY3QgPSBiYXNlOwogICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gY3Vy
cmVudFNoYXBlID0gdGhpczsKIAogICAgIHdoaWxlIChjdXJyZW50U2hhcGUpIHsKLSAgICAgICAg
YXV0byBmaWVsZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVh
dGUoKTsKKyAgICAgICAgYXV0byBmaWVsZHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gY3VycmVudFNoYXBlLT5t
X2ZpZWxkcy5iZWdpbigpLCBlbmQgPSBjdXJyZW50U2hhcGUtPm1fZmllbGRzLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBmaWVsZHMtPmFkZEl0ZW0oKCppdCkuZ2V0KCkpOwog
CkBAIC0zNzUsNyArMzc1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gU3RydWN0dXJlU2hhcGUKICAgICAgICAgY3Vy
cmVudE9iamVjdC0+c2V0Q29uc3RydWN0b3JOYW1lKGN1cnJlbnRTaGFwZS0+bV9jb25zdHJ1Y3Rv
ck5hbWUpOwogCiAgICAgICAgIGlmIChjdXJyZW50U2hhcGUtPm1fcHJvdG8pIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNj
cmlwdGlvbj4gbmV4dE9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0
cnVjdHVyZURlc2NyaXB0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gbmV4dE9iamVjdCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uOjpjcmVh
dGUoKTsKICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QtPnNldFByb3RvdHlwZVN0cnVjdHVyZShu
ZXh0T2JqZWN0KTsKICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QgPSBuZXh0T2JqZWN0OwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKaW5kZXggYTliYjU2
YTY5NmZhOTViYWZhZDM5MGM5ZGRmMTlmMWQ0YTVkYjAzMy4uZWMyMTIxMGQ1MzQwMzdmOTk4ODQx
ZmY1YzQ1M2M5MWQwOGEzMzdhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVT
ZXQuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7Ci1uYW1lc3BhY2UgVHlwZUJ1aWxkZXIgIHsKK25hbWVzcGFjZSBQcm90
b2NvbCAgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXk7CiAKIG5hbWVzcGFjZSBS
dW50aW1lIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0FzRmluYWwo
KTsKICAgICB2b2lkIGFkZFByb3BlcnR5KFJlZlB0cjxTdHJpbmdJbXBsPik7CiAgICAgU3RyaW5n
IHN0cmluZ1JlcHJlc2VudGF0aW9uKCk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpSdW50aW1lOjpTdHJ1Y3R1cmVEZXNjcmlwdGlvbj4gaW5zcGVjdG9yUmVwcmVzZW50
YXRpb24oKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0
cnVjdHVyZURlc2NyaXB0aW9uPiBpbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpOwogICAgIHZvaWQg
c2V0Q29uc3RydWN0b3JOYW1lKFN0cmluZyBuYW1lKSB7IG1fY29uc3RydWN0b3JOYW1lID0gKG5h
bWUuaXNFbXB0eSgpID8gIk9iamVjdCIgOiBuYW1lKTsgfQogICAgIFN0cmluZyBjb25zdHJ1Y3Rv
ck5hbWUoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yTmFtZTsgfQogICAgIHZvaWQgc2V0UHJvdG8o
UGFzc1JlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hhcGUpIHsgbV9wcm90byA9IHNoYXBlOyB9CkBA
IC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUnVudGltZVR5cGUgZ2V0UnVudGlt
ZVR5cGVGb3JWYWx1ZShKU1ZhbHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgc2Vl
blR5cGVzKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3Q7Ci0gICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBhbGxQcmltaXRp
dmVUeXBlTmFtZXMoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2Ny
aXB0aW9uPj4gYWxsU3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkgY29uc3Q7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBhbGxQcmltaXRpdmVUeXBl
TmFtZXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxs
U3RydWN0dXJlUmVwcmVzZW50YXRpb25zKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5n
IGxlYXN0Q29tbW9uQW5jZXN0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTBj
YTZjZWExZjIxMWJmMDc1NjMzMzIxZDNhZWExMzZhNzY1OTQ3NS4uZDI1Zjg2ZjdmN2E5N2U1ZWJi
MGRjZjc0ZGNlNGI0ZDhlNGJmYTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTc5Miw4ICs3
OTIsOCBAQCBzZXQoV2ViQ29yZV9JTlNQRUNUT1JfUFJPVE9DT0xfU0NSSVBUUwogICAgICR7V2Vi
Q29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CiAgICAgJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRT
X0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weQogICAg
ICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfZnJvbnRl
bmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQotICAgICR7V2ViQ29yZV9JTlNQRUNUT1Jf
U0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2hlYWRlci5weQotICAg
ICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2NvZGVnZW4vZ2VuZXJhdGVfdHlwZV9i
dWlsZGVyX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRT
X0RJUn0vY29kZWdlbi9nZW5lcmF0ZV9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKKyAgICAke1dl
YkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL2dlbmVyYXRlX3Byb3RvY29sX3R5
cGVzX2ltcGxlbWVudGF0aW9uLnB5CiAgICAgJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJ
Un0vY29kZWdlbi9nZW5lcmF0b3IucHkKICAgICAke1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNf
RElSfS9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKICAgICAke1dlYkNvcmVfSU5TUEVD
VE9SX1NDUklQVFNfRElSfS9jb2RlZ2VuL19faW5pdF9fLnB5CkBAIC0zMjE5LDggKzMyMTksOCBA
QCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9JbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAgICAgICAgICAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVy
cy5jcHAKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rv
cldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaAotICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcAotICAgICAgICAgICAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgKKyAg
ICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvcldlYlByb3Rv
Y29sVHlwZXMuY3BwCisgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9J
bnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgKICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCSU5TUEVDVE9SVUlfRElSfS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvcldlYkJh
Y2tlbmRDb21tYW5kcy5qcwogICAgIE1BSU5fREVQRU5ERU5DWSAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vSW5zcGVjdG9yV2ViLmpzb24KICAgICBERVBFTkRTICR7V2ViQ29yZV9JTlNQ
RUNUT1JfUFJPVE9DT0xfU0NSSVBUU30KQEAgLTMyMzEsNyArMzIzMSw3IEBAIGFkZF9jdXN0b21f
Y29tbWFuZCgKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwCi0gICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvcldl
YlR5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5z
cGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5jcHAKICkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCBlNDkxNzk3MjQzZTY4MmE1MmExYmU2NWY0OGJmNDgzYzNlMGNiM2M3Li42OTli
YzQ2YzJlOTgzM2IzYWE1NGJmYmEzNDk1OTA1NTU4ZjljYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTExNzIsOCArMTE3Miw4IEBAIElOU1BFQ1RPUl9HRU5FUkFUT1JfU0NS
SVBUUyA9IFwKICAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRlX2JhY2tlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBcCiAgICAgJChJbnNwZWN0b3JTY3JpcHRzKS9nZW5lcmF0
ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBcCiAgICAgJChJbnNwZWN0b3JTY3JpcHRz
KS9nZW5lcmF0ZV9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IFwKLSAgICAk
KEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRlX3R5cGVfYnVpbGRlcl9oZWFkZXIucHkgXAotICAg
ICQoSW5zcGVjdG9yU2NyaXB0cykvZ2VuZXJhdGVfdHlwZV9idWlsZGVyX2ltcGxlbWVudGF0aW9u
LnB5IFwKKyAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRlX3Byb3RvY29sX3R5cGVzX2hl
YWRlci5weSBcCisgICAgJChJbnNwZWN0b3JTY3JpcHRzKS9nZW5lcmF0ZV9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weSBcCiAgICAgJChJbnNwZWN0b3JTY3JpcHRzKS9nZW5lcmF0b3Jf
dGVtcGxhdGVzLnB5IFwKICAgICAkKEluc3BlY3RvclNjcmlwdHMpL2dlbmVyYXRvci5weSBcCiAg
ICAgJChJbnNwZWN0b3JTY3JpcHRzKS9nZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5w
eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0
b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGI4OGJiODBiNTUzMDY0YjMyYWJkOGFmMWFjMmM0NzlhNDM4Nzg3OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9JbnNwZWN0b3JK
U1Byb3RvY29sVHlwZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5z
cGVjdG9ySlNQcm90b2NvbFR5cGVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSW5zcGVjdG9ySlNQ
cm90b2NvbFR5cGVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1Byb3Rv
Y29sVHlwZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5NDk0ZTA0Njg4ZTY2N2Y3ODE1OWY3
NGNmZGFkMGQ5ODExNDQ0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JKU1R5cGVCdWlsZGVyc19oCi0jZGVmaW5lIFdlYkNvcmVf
RldEX0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oPgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclBy
b3RvY29sVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGRiYmFjZDBkMjRkZGY2ODI2ODcxNzI5OGIxMzY5
MTNkZDJiYzhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaApAQCAtMCwwICsxLDQgQEAK
KyNpZm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yUHJvdG9jb2xUeXBlc19oCisjZGVmaW5lIFdl
YkNvcmVfRldEX0luc3BlY3RvclByb3RvY29sVHlwZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvclByb3RvY29sVHlwZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL0luc3BlY3RvclR5cGVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNwZWN0b3IvSW5zcGVjdG9y
VHlwZUJ1aWxkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5ZTExMzUyNjIx
YTk5NGI3ODZkNjg0ZWM1NDAzYWE5Mjk4NjNjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNw
ZWN0b3IvSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBA
QAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JUeXBlQnVpbGRlcl9oCi0jZGVmaW5lIFdl
YkNvcmVfRldEX0luc3BlY3RvclR5cGVCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JUeXBlQnVpbGRlci5oPgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA3
MjYxOWMxMTE4MGU3MjU0ZmFlMDg0NDJjNjQyZDE4NWExMmQ4NjEyLi5mNDQ1YmM0ZmRmNWFlNDJj
MmRkMjczNGVhZjNlMjhjMTQ0YjM4YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIxMDA0LDcg
KzIxMDA0LDcgQEAgX19aVFZON1dlYkNvcmUxNEluc3BlY3RvclN0eWxlRQogX19aVFZON1dlYkNv
cmUxOUluc3BlY3RvclN0eWxlU2hlZXRFCiBfX1pUVk43V2ViQ29yZTMzSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlRQogX19aVFZON1dlYkNvcmUyMkluc3BlY3RvclRpbWVsaW5lQWdl
bnRFCi1fX1pON1dlYkNvcmUxMVR5cGVCdWlsZGVyTDIwZW51bV9jb25zdGFudF92YWx1ZXNFCitf
X1pON1dlYkNvcmU4UHJvdG9jb2xMMjBlbnVtX2NvbnN0YW50X3ZhbHVlc0UKIF9fWlRWTjdXZWJD
b3JlMTlJbnNwZWN0b3JPYmplY3RCYXNlRQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckFycmF5
QmFzZUUKIF9fWlRWTjdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZUUKQEAgLTIzOTk2LDcgKzIzOTk2
LDcgQEAgX19fYmxvY2tfbGl0ZXJhbF9nbG9iYWwKIF9fX2Jsb2NrX2Rlc2NyaXB0b3JfdG1wCiBf
X19ibG9ja19kZXNjcmlwdG9yX3RtcAogX19fYmxvY2tfZGVzY3JpcHRvcl90bXAKLV9fWlRWTjdX
ZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfOUxheWVyVHJlZTVMYXllckVFRQorX19aVFZO
N1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzlMYXllclRyZWU1TGF5ZXJFRUUKIF9fWlRWTjdX
ZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMjNJbnNwZWN0b3JMYXllclRyZWVBZ2VudEVF
RQogX19aVFZON1dlYkNvcmUxNUluc3BlY3Rvck9iamVjdEUKIF9fWlpON1dlYkNvcmVMMjBndWlk
Rm9yT3JpZ2luQW5kTmFtZUVSS04zV1RGNlN0cmluZ0VTM19FMTRjdXJyZW50TmV3R1VJRApAQCAt
MjQwNjEsMTAgKzI0MDYxLDEwIEBAIF9fWlRWTjdXZWJDb3JlNVRpbWVySU5TXzIwQ2FjaGVkUmVz
b3VyY2VMb2FkZXJFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVy
SU4zSlNDMTlTb3VyY2VQcm92aWRlckNhY2hlRUVFCiBfX1pUVk43V2ViQ29yZTIyQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dEUKIF9fWlRWTjdXZWJDb3JlOUNsaXBib2FyZEUKLV9fWlRWTjdXZWJDb3Jl
MTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfN1J1bnRpbWUxMlJlbW90ZU9iamVjdEVFRQorX19aVFZO
N1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzdSdW50aW1lMTJSZW1vdGVPYmplY3RFRUUKIF9f
WlRWTjdXZWJDb3JlMThJbmplY3RlZFNjcmlwdEJhc2VFCiBfX1pUVk43V2ViQ29yZTExU2NyaXB0
VmFsdWVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzRQYWdlMTFTZWFy
Y2hNYXRjaEVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzRQYWdlMTFTZWFy
Y2hNYXRjaEVFRQogX19aVFZON1dlYkNvcmUxNUNvbnRleHRGZWF0dXJlc0UKIF9fWlRWTjdXZWJD
b3JlMjFDb250ZXh0RmVhdHVyZXNDbGllbnRFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50
YXRpb243V3JhcHBlcklON1dlYkNvcmUxN0NTU1ByaW1pdGl2ZVZhbHVlRUVFCkBAIC0yNDM2MCw3
ICsyNDM2MCw3IEBAIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43
V2ViQ29yZTEyU2hhcmVkQnVmZmVyRUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRp
b243V3JhcHBlcklON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dEVFRQogX19aVFZON1dlYkNvcmU1
VGltZXJJTlNfMTFFdmVudFNlbmRlcklOU18xMUltYWdlTG9hZGVyRUVFRUUKIF9fWlRWTjdXZWJD
b3JlMTRJbmplY3RlZFNjcmlwdEUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlO
UzBfOERlYnVnZ2VyOUNhbGxGcmFtZUVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJ
TlMwXzhEZWJ1Z2dlcjlDYWxsRnJhbWVFRUUKIF9fWlRWTjdXZWJDb3JlMTJTY3JpcHRPYmplY3RF
CiBfX1pUVk43V2ViQ29yZTIwSW5qZWN0ZWRTY3JpcHRNb2R1bGVFCiBfX1pUVk4zV1RGMjFNZW1v
cnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxMlJlbmRlck9iamVjdEVFRQpAQCAt
MjQzNjksOCArMjQzNjksOCBAQCBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3Jh
cHBlcklON1dlYkNvcmU5SW5saW5lQm94RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50
YXRpb243V3JhcHBlcklON1dlYkNvcmUxNFJlbmRlck92ZXJmbG93RUVFCiBfX1pUVk4zV1RGMjFN
ZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxM0lubGluZVRleHRCb3hFRUUK
IF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMTRJbnNwZWN0b3JBZ2VudEVF
RQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8xNkFwcGxpY2F0aW9uQ2Fj
aGUyNEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWls
ZGVyNUFycmF5SU5TMF8xNkFwcGxpY2F0aW9uQ2FjaGUxN0ZyYW1lV2l0aE1hbmlmZXN0RUVFCitf
X1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfMTZBcHBsaWNhdGlvbkNhY2hlMjRBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5T
MF8xNkFwcGxpY2F0aW9uQ2FjaGUxN0ZyYW1lV2l0aE1hbmlmZXN0RUVFCiBfX1pUVk43V2ViQ29y
ZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzMwSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
RUVFCiBfX1pON1dlYkNvcmUyNkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyMTJjb21tYW5kTmFt
ZXNFCiBfX1paTjdXZWJDb3JlMzBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw4ZGlzcGF0
Y2hFUktOM1dURjZTdHJpbmdFRThoYW5kbGVycwpAQCAtMjQzOTMsMTkgKzI0MzkzLDE5IEBAIF9f
WlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE0SW5zcGVj
dG9yU3RhdGVFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43
V2ViQ29yZTIxSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyRUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0
cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxOUluc3RydW1lbnRpbmdBZ2VudHNFRUUKIF9f
WlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTE0SW5zcGVj
dG9yQWdlbnRFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzZS
ZWdpb25FRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlpRUUKLV9fWlRWTjdX
ZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzlSdWxlTWF0Y2hFRUUKLV9fWlRWTjdX
ZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzdDU1NSdWxlRUVFCi1fX1pUVk43V2Vi
Q29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzNDU1M5TmFtZWRGbG93RUVFCi1fX1pUVk43V2Vi
Q29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTjNXVEY2U3RyaW5nRUVFCi1fX1pUVk43V2ViQ29yZTEx
VHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzNDU1MxNUNTU1Byb3BlcnR5SW5mb0VFRQotX19aVFZON1dl
YkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMTlDU1NTdHlsZVNoZWV0SGVhZGVyRUVF
Ci1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzNDU1MxOUluaGVyaXRlZFN0
eWxlRW50cnlFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzE1
UHNldWRvSWRNYXRjaGVzRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NT
UzZSZWdpb25FRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SWlFRQorX19aVFZON1dl
YkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1M5UnVsZU1hdGNoRUVFCitfX1pUVk43V2ViQ29y
ZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzdDU1NSdWxlRUVFCitfX1pUVk43V2ViQ29yZThQcm90
b2NvbDVBcnJheUlOUzBfM0NTUzlOYW1lZEZsb3dFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29s
NUFycmF5SU4zV1RGNlN0cmluZ0VFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMw
XzNDU1MxNUNTU1Byb3BlcnR5SW5mb0VFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJ
TlMwXzNDU1MxOUNTU1N0eWxlU2hlZXRIZWFkZXJFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29s
NUFycmF5SU5TMF8zQ1NTMTlJbmhlcml0ZWRTdHlsZUVudHJ5RUVFCitfX1pUVk43V2ViQ29yZThQ
cm90b2NvbDVBcnJheUlOUzBfM0NTUzE1UHNldWRvSWRNYXRjaGVzRUVFCiBfX1pUVk43V2ViQ29y
ZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzE3SW5zcGVjdG9yQ1NTQWdlbnRFRUUKIF9fWlRWTjdX
ZWJDb3JlNVRpbWVySU5TXzIyVXBkYXRlUmVnaW9uTGF5b3V0VGFza0VFRQotX19aVFZON1dlYkNv
cmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMjBTZWxlY3RvclByb2ZpbGVFbnRyeUVFRQor
X19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1MyMFNlbGVjdG9yUHJvZmlsZUVu
dHJ5RUVFCiBfX1pUVk43V2ViQ29yZTE1U2VsZWN0b3JQcm9maWxlRQogX19aVFZON1dlYkNvcmUx
N0luc3BlY3RvckNTU0FnZW50MTNBZGRSdWxlQWN0aW9uRQogX19aVFZON1dlYkNvcmUxN0luc3Bl
Y3RvckNTU0FnZW50MTZTdHlsZVNoZWV0QWN0aW9uRQpAQCAtMjQ0MTQsMTkgKzI0NDE0LDE5IEBA
IF9fWlRWTjdXZWJDb3JlMTdJbnNwZWN0b3JDU1NBZ2VudDIwVG9nZ2xlUHJvcGVydHlBY3Rpb25F
CiBfX1pUVk43V2ViQ29yZTE3SW5zcGVjdG9yQ1NTQWdlbnQyMVNldFByb3BlcnR5VGV4dEFjdGlv
bkUKIF9fWlRWTjdXZWJDb3JlMTdJbnNwZWN0b3JDU1NBZ2VudDIzU2V0U3R5bGVTaGVldFRleHRB
Y3Rpb25FCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzIySW5zcGVjdG9y
RGF0YWJhc2VBZ2VudEVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TXzE0
SW5zcGVjdG9yVmFsdWVFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TXzE0SW5z
cGVjdG9yVmFsdWVFRUUKIF9fWk43V2ViQ29yZUwxMm5leHRVbnVzZWRJZEUKIF9fWk43V2ViQ29y
ZTIySW5zcGVjdG9yRGVidWdnZXJBZ2VudDIwYmFja3RyYWNlT2JqZWN0R3JvdXBFCiBfX1pUVk4z
V1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxNUluc3BlY3Rvck9i
amVjdEVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjNKU0M5
RXhlY1N0YXRlRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzhEZWJ1
Z2dlcjhMb2NhdGlvbkVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzhEZWJ1
Z2dlcjhMb2NhdGlvbkVFRQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJhc2VBZ2VudElOU18y
Mkluc3BlY3RvckRlYnVnZ2VyQWdlbnRFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVB
cnJheUlOUzBfM0RPTTEzRXZlbnRMaXN0ZW5lckVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWls
ZGVyNUFycmF5SU5TMF8zRE9NNE5vZGVFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5
SU5TMF8zRE9NMTNFdmVudExpc3RlbmVyRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJh
eUlOUzBfM0RPTTROb2RlRUVFCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5T
XzE3SW5zcGVjdG9yRE9NQWdlbnRFRUUKIF9fWlRWTjdXZWJDb3JlNVRpbWVySU5TXzI4UmV2YWxp
ZGF0ZVN0eWxlQXR0cmlidXRlVGFza0VFRQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJhc2VB
Z2VudElOU18yNUluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnRFRUUKLV9fWlRWTjdXZWJDb3JlMTFU
eXBlQnVpbGRlcjVBcnJheUlOUzFfSU4zV1RGNlN0cmluZ0VFRUVFCitfX1pUVk43V2ViQ29yZThQ
cm90b2NvbDVBcnJheUlOUzFfSU4zV1RGNlN0cmluZ0VFRUVFCiBfX1pUVk43V2ViQ29yZTE4SW5z
cGVjdG9yQmFzZUFnZW50SU5TXzI0SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50RUVFCiBfX1pUVk4z
V1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxMVN0b3JhZ2VBcmVh
RUVFCiBfX1pUVk43V2ViQ29yZTVUaW1lcklOU18yOEluc3BlY3RvckJhY2tlbmREaXNwYXRjaFRh
c2tFRUUKQEAgLTI0NDM3LDQyICsyNDQzNyw0MiBAQCBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVt
ZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxOUhlYXBHcmFwaFNlcmlhbGl6ZXJFRUUKIF9fWlRW
TjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTMxTWVtb3J5SW5z
dHJ1bWVudGF0aW9uQ2xpZW50SW1wbEVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0
aW9uN1dyYXBwZXJJTjdXZWJDb3JlMjVNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsRUVFCiBfX1pU
Vk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUyMEluc3BlY3Rv
ck1lbW9yeUFnZW50RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzZN
ZW1vcnkxMU1lbW9yeUJsb2NrRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBf
Nk1lbW9yeTExTWVtb3J5QmxvY2tFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlv
bjdXcmFwcGVySU43V2ViQ29yZTExTWVtb3J5Q2FjaGVFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUlu
c3RydW1lbnRhdGlvbjdXcmFwcGVySU5TXzE1QXJyYXlCdWZmZXJWaWV3RUVFCiBfX1pUVk4zV1RG
MjFNZW1vcnlJbnN0cnVtZW50YXRpb243V3JhcHBlcklOU18xMUFycmF5QnVmZmVyRUVFCi1fX1pU
Vk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzZNZW1vcnkxM0xpc3RlbmVyQ291bnRF
RUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfNk1lbW9yeTlOb2RlQ291
bnRFRUUKLV9fWlRWTjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfNk1lbW9yeThET01H
cm91cEVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzZNZW1vcnkxM0xpc3Rl
bmVyQ291bnRFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF82TWVtb3J5OU5v
ZGVDb3VudEVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzZNZW1vcnk4RE9N
R3JvdXBFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2Vi
Q29yZTdJbnRSZWN0RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzRQ
YWdlMTdGcmFtZVJlc291cmNlVHJlZUVFRQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFy
cmF5SU5TMF80UGFnZTE3RnJhbWVSZXNvdXJjZVRyZWU5UmVzb3VyY2VzRUVFCi1fX1pUVk43V2Vi
Q29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzRQYWdlMTJTZWFyY2hSZXN1bHRFRUUKLV9fWlRW
TjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfNFBhZ2U2Q29va2llRUVFCitfX1pUVk43
V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfNFBhZ2UxN0ZyYW1lUmVzb3VyY2VUcmVlRUVFCitf
X1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfNFBhZ2UxN0ZyYW1lUmVzb3VyY2VUcmVl
OVJlc291cmNlc0VFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzRQYWdlMTJT
ZWFyY2hSZXN1bHRFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF80UGFnZTZD
b29raWVFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMThJbnNwZWN0
b3JQYWdlQWdlbnRFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVy
SU43V2ViQ29yZTE4U2NyaXB0SGVhcFNuYXBzaG90RUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0
cnVtZW50YXRpb243V3JhcHBlcklON1dlYkNvcmUxM1NjcmlwdFByb2ZpbGVFRUUKIF9fWlRWTjNX
VEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTIxSW5zcGVjdG9yQ29u
c29sZUFnZW50RUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzhQcm9m
aWxlcjEzUHJvZmlsZUhlYWRlckVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMw
XzhQcm9maWxlcjEzUHJvZmlsZUhlYWRlckVFRQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJh
c2VBZ2VudElOU18yMkluc3BlY3RvclByb2ZpbGVyQWdlbnRFRUUKIF9fWlRWTjdXZWJDb3JlMTlX
b3JrZXJQcm9maWxlckFnZW50RQogX19aVFZON1dlYkNvcmUxN1BhZ2VQcm9maWxlckFnZW50RQog
X19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJhc2VBZ2VudElOU18yMkluc3BlY3RvclJlc291cmNl
QWdlbnRFRUUKLV9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2Vi
Q29yZTExVHlwZUJ1aWxkZXI3TmV0d29yazlJbml0aWF0b3JFRUUKK19fWlRWTjNXVEYyMU1lbW9y
eUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZThQcm90b2NvbDdOZXR3b3JrOUluaXRp
YXRvckVFRQogX19aVFZOM1dURjIxTWVtb3J5SW5zdHJ1bWVudGF0aW9uN1dyYXBwZXJJTjdXZWJD
b3JlMTNYSFJSZXBsYXlEYXRhRUVFCiBfX1pUVk4zV1RGMjFNZW1vcnlJbnN0cnVtZW50YXRpb243
V3JhcHBlcklON1dlYkNvcmUyMlRocmVhZGFibGVMb2FkZXJDbGllbnRFRUUKIF9fWlRWTjNXVEYy
MU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29yZTIwTmV0d29ya1Jlc291cmNl
c0RhdGFFRUUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMjFJbnNwZWN0
b3JSdW50aW1lQWdlbnRFRUUKIF9fWlRWTjdXZWJDb3JlMTRJbnNwZWN0b3JTdGF0ZUUKLV9fWlRW
TjdXZWJDb3JlMTFUeXBlQnVpbGRlcjVBcnJheUlOUzBfM0NTUzhDU1NNZWRpYUVFRQotX19aVFZO
N1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMTRTaG9ydGhhbmRFbnRyeUVFRQot
X19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMTFDU1NQcm9wZXJ0eUVF
RQotX19aVFZON1dlYkNvcmUxMVR5cGVCdWlsZGVyNUFycmF5SU5TMF8zQ1NTMjRDU1NDb21wdXRl
ZFN0eWxlUHJvcGVydHlFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zQ1NT
OENTU01lZGlhRUVFCitfX1pUVk43V2ViQ29yZThQcm90b2NvbDVBcnJheUlOUzBfM0NTUzE0U2hv
cnRoYW5kRW50cnlFRUUKK19fWlRWTjdXZWJDb3JlOFByb3RvY29sNUFycmF5SU5TMF8zQ1NTMTFD
U1NQcm9wZXJ0eUVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzNDU1MyNENT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eUVFRQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJhc2VB
Z2VudElOU18yMkluc3BlY3RvclRpbWVsaW5lQWdlbnRFRUUKLV9fWk43V2ViQ29yZTExVHlwZUJ1
aWxkZXI3TmV0d29yazhSZXNwb25zZThNaW1lVHlwZUUKLV9fWk43V2ViQ29yZTExVHlwZUJ1aWxk
ZXIzQ1NTMTFDU1NQcm9wZXJ0eThQcmlvcml0eUUKLV9fWk43V2ViQ29yZTExVHlwZUJ1aWxkZXIz
Q1NTMTFDU1NQcm9wZXJ0eThQYXJzZWRPa0UKLV9fWk43V2ViQ29yZTExVHlwZUJ1aWxkZXIzQ1NT
MTFDU1NQcm9wZXJ0eTZTdGF0dXNFCitfX1pON1dlYkNvcmU4UHJvdG9jb2w3TmV0d29yazhSZXNw
b25zZThNaW1lVHlwZUUKK19fWk43V2ViQ29yZThQcm90b2NvbDNDU1MxMUNTU1Byb3BlcnR5OFBy
aW9yaXR5RQorX19aTjdXZWJDb3JlOFByb3RvY29sM0NTUzExQ1NTUHJvcGVydHk4UGFyc2VkT2tF
CitfX1pON1dlYkNvcmU4UHJvdG9jb2wzQ1NTMTFDU1NQcm9wZXJ0eTZTdGF0dXNFCiBfX1pON1dl
YkNvcmUyMEluc3BlY3RvcldvcmtlckFnZW50MjFXb3JrZXJGcm9udGVuZENoYW5uZWw4c19uZXh0
SWRFCiBfX1pUVk43V2ViQ29yZTE4SW5zcGVjdG9yQmFzZUFnZW50SU5TXzIwSW5zcGVjdG9yV29y
a2VyQWdlbnRFRUUKIF9fWlRWTjdXZWJDb3JlMjBJbnNwZWN0b3JXb3JrZXJBZ2VudDIxV29ya2Vy
RnJvbnRlbmRDaGFubmVsRQpAQCAtMjYyMzcsNyArMjYyMzcsNyBAQCBfX1pON1dlYkNvcmUyMlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMxOWlzVmlkZW9UcmFja0VuYWJsZWRFCiBfX1pUVk43V2ViQ29y
ZTZTY3JlZW5FCiBfX1pUVk43V2ViQ29yZTI0U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyRQogX19a
VFZOM0pTQzlXZWFrR0NNYXBJUHZOU184SlNPYmplY3RFTlNfMzNEZWZhdWx0V2Vha0dDTWFwRmlu
YWxpemVyQ2FsbGJhY2tJUzFfUzJfRUVOM1dURjdQdHJIYXNoSVMxX0VFTlM1XzEwSGFzaFRyYWl0
c0lTMV9FRUVFCi1fX1pUVk43V2ViQ29yZTExVHlwZUJ1aWxkZXI1QXJyYXlJTlMwXzdDb25zb2xl
OUNhbGxGcmFtZUVFRQorX19aVFZON1dlYkNvcmU4UHJvdG9jb2w1QXJyYXlJTlMwXzdDb25zb2xl
OUNhbGxGcmFtZUVFRQogX19aVFZON1dlYkNvcmU1VGltZXJJTlNfMTdTY3JpcHREZWJ1Z1NlcnZl
ckVFRQogX19aVFZON1dlYkNvcmU1VGltZXJJTlNfMjdTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXJFRUUKIF9fWlRWTjNXVEYyMU1lbW9yeUluc3RydW1lbnRhdGlvbjdXcmFwcGVySU43V2ViQ29y
ZTEwRmlsZVRocmVhZEVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oKaW5kZXggZTZjZTgzYzM1Mjg1NjFiMGJlMzY5Njk2OGNkYWEzOTdmOGI0M2I4
NC4uNTk0ZjliYTBkOGRjMWFhM2EwZTY5MDdlNWQzZWMyZWVkZGU4YTU2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC04MDUsNyArODA1
LDcgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xIVE1MTmFtZXMuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3Bl
Y3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVy
cy5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJh
Y3RXb3JrZXIuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KQEAgLTE4MzA4LDcgKzE4MzA4LDcgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xJbnNwZWN0b3JPdmVybGF5UGFnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXElu
c3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNw
ZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcV2ViQ29yZVxE
ZXJpdmVkU291cmNlc1xKU0Fic3RyYWN0V29ya2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNBdHRyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNCYXJQcm9wLmgiIC8+CkBAIC0x
ODg2NSw4ICsxODg2NSw4IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0
b3JcSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJz
XGluc3BlY3RvclxJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclR5cGVCdWlsZGVyLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9ySlNQ
cm90b2NvbFR5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvclZh
bHVlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
aW5zcGVjdG9yXFNjcmlwdEFyZ3VtZW50cy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cRm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yXFNjcmlwdEJyZWFrcG9pbnQuaCIgLz4KQEAg
LTIxMzgxLDQgKzIxMzgxLDQgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRh
cmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGMwZjFiNzc0YTUwNGUwYTU1
MzVkZTc5MjJmY2E3ZDE5OTYxZWQ1YzIuLjFmMjJkZmVjMGI2MDE5MTMzYTFhZjUwMTI2OTYzNzhk
YjZkOWE2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTUyMDMsNyArNTIwMyw3IEBAIO+7vzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXElu
c3BlY3RvcldlYlR5cGVCdWlsZGVycy5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTQWJzdHJhY3RXb3JrZXIu
Y3BwIj4KQEAgLTEyMzA5LDEwICsxMjMwOSwxMCBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNcaW5zcGVjdG9yXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIj4KICAgICAg
IDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNcaW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNw
ZWN0b3JcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3JcSW5zcGVjdG9ySlNQcm90b2NvbFR5cGVz
LmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JUeXBlQnVpbGRlci5oIj4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JQcm90b2Nv
bFR5cGVzLmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xpbnNwZWN0b3I8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXGluc3BlY3RvclxJbnNwZWN0b3JWYWx1ZXMuaCI+CkBAIC0xMzEzMCw3ICsx
MzEzMCw3IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2Vi
RnJvbnRlbmREaXNwYXRjaGVycy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCI+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9yV2ViUHJvdG9j
b2xUeXBlcy5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpT
QWJzdHJhY3RXb3JrZXIuaCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjQ1ZmZkZTA5MzhiYWQ2ZGIyMzA4Mzk5NThlNmNiZjk4
MWNlNmM3My4uMGQwZDY0ZWE2MjI2YmY0NTM4NTJiNmE1YjJjYmUxNmU2MzM5Y2U5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjA0Niw5ICsyMDQ2LDkgQEAKIAkJNTNFRjc2NkMxNjUzMTk5NDAwNENCRTQ5IC8qIFNldHRpbmdz
TWFjcm9zLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3Mu
aCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0Qx
MzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuY3BwICovOyB9
OworCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzNE
MTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5jcHAgKi87
IH07CiAJCTU3OERBMjBFMTUyMEVCOEMwMDYxNDFDMSAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERp
c3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRj
aGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTU3OERBMjBGMTUyMEVCQTMwMDYxNDFDMSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ2MTRD
RTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzhEQTIwRjE1MjBFQkEzMDA2
MTQxQzEgLyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIElu
c3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1N0I3OTFBMzE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERp
c3RyaWJ1dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwICov
OyB9OwogCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMDE0
QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudERpc3RyaWJ1dG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTdDRjQ5NzQxNEVFMzZENzAwRUNGRjE0
IC8qIEluc2VydGlvblBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3Q0Y0OTcyMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5j
cHAgKi87IH07CkBAIC05MTQ0LDggKzkxNDQsOCBAQAogCQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JF
NDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1
NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk1
NzNEMTM0NTE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3M0QxMzQ2MTRDRTM5RkYw
MDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJQ
cm90b2NvbFR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3RvcldlYlByb3RvY29sVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXZWJQcm90b2NvbFR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MTlGMTRDNkE2MjkwMEYy
MDJEMSAvKiBDb250ZW50RGlzdHJpYnV0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29udGVudERpc3RyaWJ1dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnREaXN0cmlidXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RGlzdHJpYnV0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0IC8q
IEluc2VydGlvblBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc2VydGlvblBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTQx
LDggKzE1MTQxLDggQEAKIAkJCQk0RjcwN0E5ODExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9y
V2ViQmFja2VuZERpc3BhdGNoZXJzLmggKi8sCiAJCQkJNEY0RjVGRkExMUNCRDJEMjAwQTE4NkJG
IC8qIEluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICovLAogCQkJCTRGNEY1RkZD
MTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmggKi8s
Ci0JCQkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5cGVCdWlsZGVy
cy5jcHAgKi8sCi0JCQkJNTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvcldlYlR5
cGVCdWlsZGVycy5oICovLAorCQkJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0
b3JXZWJQcm90b2NvbFR5cGVzLmNwcCAqLywKKwkJCQk1NzNEMTM0NjE0Q0UzOUZGMDA1N0FCQ0Eg
LyogSW5zcGVjdG9yV2ViUHJvdG9jb2xUeXBlcy5oICovLAogCQkJCUE1ODRGRTM5MTg2NEUyRDgw
MDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgKi8sCiAJCQkJQTU4NEZFM0ExODY0
RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0LmggKi8sCiAJCQkJN0EwRTc3MUMx
MEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCAqLywKQEAgLTI0
NTc4LDcgKzI0NTc4LDcgQEAKIAkJCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVj
dG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjcwN0E5QTExRUY2Nzk0MDBB
Q0RBNjkgLyogSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzhEQTIwRTE1MjBFQjhDMDA2MTQxQzEgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNw
YXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTc4REEyMEYxNTIwRUJBMzAwNjE0MUMxIC8q
IEluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc4REEyMEYx
NTIwRUJBMzAwNjE0MUMxIC8qIEluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM3NUNDMDcxMTUwRDMwMDAwOEREQjgxIC8qIEluc3Bl
Y3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0FCRkUwQzEzMEU5REEw
MDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODAw
Myw3ICsyODAwMyw3IEBACiAJCQkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEY3MDdBOTkxMUVGNjc5NDAw
QUNEQTY5IC8qIEluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0RjRGNUZGQjExQ0JEMkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yV2ViRnJvbnRlbmRE
aXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FC
Q0EgLyogSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU3
M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUYzODEwQzFCMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzUwQjczNTEzRjEzNzdEMDA4ODBD
NDMgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDQ2RjA0
RTE3Qjk2RkJEMDA1NjQ3RjAgLyogSW50UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IGI2OGI0
Y2U5ZDI5Yjc5MGEzMjljZjIyODRhMzZiNTY2Y2RiOTJjMGUuLjQ1MDA4OTYxZDFiMDQzM2ZlMDBm
MmZkZjZiNWFhOGZmZjRjMmZkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSUhvc3QuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQ29tbWFuZExpbmVB
UElIb3N0OjpkaXNjb25uZWN0KCkKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjppbnNwZWN0SW1w
bChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IGhpbnRzKQogewogICAgIGlmIChtX2luc3BlY3RvckFnZW50KSB7Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlbW90
ZU9iamVjdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3Qob2JqZWN0KTsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcmVtb3RlT2JqZWN0ID0gQmlu
ZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+Ojpy
dW50aW1lQ2FzdChvYmplY3QpOwogICAgICAgICBtX2luc3BlY3RvckFnZW50LT5pbnNwZWN0KHJl
bW90ZU9iamVjdCwgaGludHMtPmFzT2JqZWN0KCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKaW5kZXggYWE5MWViMWJhZmMxNWQwMTg2MTc4MGEwNGY2ZTZjMjA3ZGZhMTRiZi4uNjEz
NGQ3YzM4MTBiYzRkNDhiNDdkNmE0MjNhOTcwNTFkNWJjZDcxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uZXR3
b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQordm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVzdWx0KQogewot
ICAgIHJlc3VsdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7
CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAog
ICAgIEZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCk7CiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KG1haW5GcmFtZSkpIHsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0
cmluZyosIFJlZlB0cgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvIGlu
Zm8gPSBob3N0LT5hcHBsaWNhdGlvbkNhY2hlSW5mbygpOwogICAgICAgICBTdHJpbmcgbWFuaWZl
c3RVUkwgPSBpbmZvLm1fbWFuaWZlc3Quc3RyaW5nKCk7CiAgICAgICAgIGlmICghbWFuaWZlc3RV
UkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+IHZhbHVlID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0
ZSgpCisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25D
YWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+IHZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXBw
bGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCiAgICAgICAgICAgICAg
ICAgLnNldEZyYW1lSWQobV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpKQogICAgICAgICAgICAg
ICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAgICAgICAgICAgICAuc2V0U3Rh
dHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC0+c3RhdHVzKCkpKTsKQEAgLTEzNiw3ICsxMzYsNyBA
QCB2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0TWFuaWZlc3RGb3JGcmFt
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbgogICAgICptYW5pZmVzdFVSTCA9IGluZm8ubV9tYW5p
ZmVzdC5zdHJpbmcoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxp
Y2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+JiBhcHBsaWNhdGlvbkNhY2hlKQordm9pZCBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFt
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+
JiBhcHBsaWNhdGlvbkNhY2hlKQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsK
ICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpAQCAtMTUxLDkgKzE1MSw5IEBAIHZvaWQgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJy
b3JTdHJpbmcqIGVyCiAgICAgYXBwbGljYXRpb25DYWNoZSA9IGJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZShyZXNvdXJjZXMsIGluZm8pOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlKGNv
bnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VzLCBjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvJiBhcHBs
aWNhdGlvbkNhY2hlSW5mbykKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OlJlc291cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMsIGNvbnN0
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mIGFwcGxpY2F0aW9uQ2FjaGVJbmZvKQog
ewotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpB
cHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKQogICAgICAgICAu
c2V0TWFuaWZlc3RVUkwoYXBwbGljYXRpb25DYWNoZUluZm8ubV9tYW5pZmVzdC5zdHJpbmcoKSkK
ICAgICAgICAgLnNldFNpemUoYXBwbGljYXRpb25DYWNoZUluZm8ubV9zaXplKQogICAgICAgICAu
c2V0Q3JlYXRpb25UaW1lKGFwcGxpY2F0aW9uQ2FjaGVJbmZvLm1fY3JlYXRpb25UaW1lKQpAQCAt
MTYyLDkgKzE2Miw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9yCiAgICAgICAgIC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlPj4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJ
bmZvTGlzdCYgYXBwbGljYXRpb25DYWNoZVJlc291cmNlcykKK1Bhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYgYXBwbGljYXRpb25DYWNoZVJlc291cmNlcykK
IHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4g
cmVzb3VyY2VzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPjo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IHJl
c291cmNlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT46OmNyZWF0ZSgpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiByZXNvdXJjZUluZm8gOiBhcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VzKQogICAgICAgICByZXNvdXJjZXMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UocmVzb3VyY2VJbmZvKSk7CkBAIC0xNzIsNyArMTcyLDcgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcHBsaWNhdGlvbkNhY2gKICAgICByZXR1cm4gcmVzb3VyY2VzOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT4gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVj
dEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UmVzb3VyY2VJbmZvJiByZXNvdXJjZUluZm8pCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJiByZXNvdXJjZUlu
Zm8pCiB7CiAgICAgU3RyaW5nQnVpbGRlciB0eXBlczsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiBJCiAgICAgaWYgKHJlc291cmNlSW5mby5tX2lzRXhwbGljaXQp
CiAgICAgICAgIHR5cGVzLmFwcGVuZExpdGVyYWwoIkV4cGxpY2l0ICIpOwogCi0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNh
Y2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVzb3VyY2VJbmZv
Lm1fcmVzb3VyY2Uuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRTaXplKHN0YXRpY19jYXN0PGludD4o
cmVzb3VyY2VJbmZvLm1fc2l6ZSkpCiAgICAgICAgIC5zZXRUeXBlKHR5cGVzLnRvU3RyaW5nKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IGE5Yzc2NDI4ODcxMjVkN2NiNzBkYTUwYTkyNDU5NzE2
MWYzZjhkMWYuLmFlOTRkMDIxNDdkYTIzMjIzOWUxOTgxZGZlZWQwYjY4NzVlY2JmN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgKQEAgLTYyLDE0ICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBuZXR3
b3JrU3RhdGVDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiYgcmVz
dWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhF
cnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXBwbGljYXRp
b25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxp
Y2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpDYWNoZUluZm8mKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Vz
KGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7Ci0gICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKKyAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNo
ZUluZm8mKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpSZXNvdXJjZUluZm8mKTsKIAogICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRG
cmFtZVdpdGhEb2N1bWVudExvYWRlcihFcnJvclN0cmluZyosIFN0cmluZyBmcmFtZUlkKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
MTY5ZDM3Y2IyZTI3NGU2MWViMDEyZjQyNzExMDk4OWJlOWUxNDMwNy4uMjFlOTk1NWFkOTYzM2U1
MTI1NDU2MDc2NmZkMjBjNWI2NDg3MzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiSFRN
TFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVy
cy5oIgorI2luY2x1ZGUgIkluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKQEAgLTYwMCw3ICs2MDAsNyBAQCBib29sIEluc3BlY3RvckNTU0Fn
ZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29s
KiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpS
dWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYg
cHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRl
ZEVudHJpZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9k
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1
ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+JiBt
YXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBwc2V1ZG9JZE1hdGNoZXMsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVtZW50
KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICgh
ZWxlbWVudCkKQEAgLTYxMywxMSArNjEzLDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAK
ICAgICAvLyBQc2V1ZG8gZWxlbWVudHMuCiAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNs
dWRlUHNldWRvKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+IHBzZXVkb0Vs
ZW1lbnRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRv
SWRNYXRjaGVzPj4gcHNldWRvRWxlbWVudHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz46OmNyZWF0ZSgpOwogICAg
ICAgICBmb3IgKFBzZXVkb0lkIHBzZXVkb0lkID0gRklSU1RfUFVCTElDX1BTRVVET0lEOyBwc2V1
ZG9JZCA8IEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQ7IHBzZXVkb0lkID0gc3RhdGljX2Nh
c3Q8UHNldWRvSWQ+KHBzZXVkb0lkICsgMSkpIHsKICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZFJ1
bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBw
c2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICAgICAgaWYgKCFt
YXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPiBtYXRjaGVzID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM6OmNyZWF0ZSgpCisgICAgICAgICAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPiBt
YXRjaGVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM6OmNyZWF0
ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRQc2V1ZG9JZChzdGF0aWNfY2FzdDxpbnQ+KHBz
ZXVkb0lkKSkKICAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZXMoYnVpbGRBcnJheUZvck1h
dGNoZWRSdWxlTGlzdChtYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIGVsZW1lbnQpKTsKICAg
ICAgICAgICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShtYXRjaGVzLnJlbGVhc2UoKSk7
CkBAIC02MjksMTIgKzYyOSwxMiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVk
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogCiAgICAgLy8g
SW5oZXJpdGVkIHN0eWxlcy4KICAgICBpZiAoIWluY2x1ZGVJbmhlcml0ZWQgfHwgKmluY2x1ZGVJ
bmhlcml0ZWQpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+IGVudHJp
ZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJp
dGVkU3R5bGVFbnRyeT4+IGVudHJpZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKICAg
ICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsK
ICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgIFN0eWxlUmVzb2x2
ZXImIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5kb2N1bWVudCgpLmVuc3Vy
ZVN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgICAgIGF1dG8gcGFyZW50TWF0Y2hlZFJ1bGVzID0g
cGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBT
dHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5PiBlbnRyeSA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkKKyAgICAg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50
cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5
OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJh
eUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIHBh
cmVudEVsZW1lbnQpKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5zdHlsZSgpICYm
IHBhcmVudEVsZW1lbnQtPnN0eWxlKCktPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JT
dHlsZVNoZWV0KHBhcmVudEVsZW1lbnQpOwpAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IG5vCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxp
bmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVz
U3R5bGUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCiB7CiAgICAgRWxlbWVudCog
ZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVs
ZW1lbnQpCkBAIC02NjEsMTEgKzY2MSwxMSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJ
bmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZAogICAg
ICAgICByZXR1cm47CiAKICAgICBpbmxpbmVTdHlsZSA9IHN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0
Rm9yU3R5bGUoZWxlbWVudC0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0
ZXNTdHlsZShlbGVtZW50KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKGVsZW1l
bnQpOwogICAgIGF0dHJpYnV0ZXNTdHlsZSA9IGF0dHJpYnV0ZXMgPyBhdHRyaWJ1dGVzLnJlbGVh
c2UoKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVk
U3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxlKQordm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYgc3R5bGUpCiB7CiAgICAg
RWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAg
ICBpZiAoIWVsZW1lbnQpCkBAIC02NzYsOSArNjc2LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm8KICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHls
ZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJv
clN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGVTaGVldEhlYWRlcj4+JiBzdHlsZUluZm9zKQogewotICAgIHN0eWxlSW5mb3MgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKKyAgICBzdHlsZUluZm9zID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNo
ZWV0SGVhZGVyPjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzID0g
bV9kb21BZ2VudC0+ZG9jdW1lbnRzKCk7CiAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnQqPjo6aXRl
cmF0b3IgaXQgPSBkb2N1bWVudHMuYmVnaW4oKTsgaXQgIT0gZG9jdW1lbnRzLmVuZCgpOyArK2l0
KSB7CiAgICAgICAgIFN0eWxlU2hlZXRMaXN0KiBsaXN0ID0gKCppdCktPnN0eWxlU2hlZXRzKCk7
CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVT
aGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnUKICAgICB9CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiBzdHlsZVNoZWV0T2JqZWN0KQordm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHN0eWxlU2hlZXRPYmplY3QpCiB7CiAgICAgSW5z
cGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRG
b3JJZChlcnJvclN0cmluZywgc3R5bGVTaGVldElkKTsKICAgICBpZiAoIWluc3BlY3RvclN0eWxl
U2hlZXQpCkBAIC03MTksNyArNzE5LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5
bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAq
ZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5bGVJZCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBmdWxsU3R5
bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1
bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTczNSw3
ICs3MzUsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcAogICAgICplcnJvclN0cmluZyA9IElu
c3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGZ1bGxTdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBT
dHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElk
KGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5kSWQuaXNFbXB0eSgpKTsKQEAgLTc1
MSw3ICs3NTEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SQogICAgICplcnJvclN0cmluZyA9
IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4
LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVs
bFN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQogewogICAgIEluc3BlY3RvckNT
U0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0Vt
cHR5KCkpOwpAQCAtNzY3LDcgKzc2Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2ds
ZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluCiAgICAg
KmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogfQog
Ci12b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZnVsbFJ1bGVJZCwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rv
cihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBmdWxsUnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQogewogICAgIEluc3BlY3RvckNTU0lkIGNv
bXBvdW5kSWQoZnVsbFJ1bGVJZCk7CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7
CkBAIC03ODQsNyArNzg0LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVj
dG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEkKICAgICAqZXJyb3JT
dHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29u
dGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9kb21B
Z2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgY29udGV4dE5vZGVJZCk7CiAgICAgaWYgKCFu
b2RlKQpAQCAtODEwLDEyICs4MTAsMTIgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVs
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUkKICAgICBy
ZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJp
bmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgY3NzUHJvcGVydGllcykKIHsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NQcm9wZXJ0eUluZm8+PiBwcm9wZXJ0aWVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiBwcm9wZXJ0aWVzID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+
OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RDU1NQcm9wZXJ0eTsgaSA8PSBsYXN0
Q1NTUHJvcGVydHk7ICsraSkgewogICAgICAgICBDU1NQcm9wZXJ0eUlEIGlkID0gY29udmVydFRv
Q1NTUHJvcGVydHlJRChpKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHlJbmZvPiBwcm9wZXJ0eSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHlJbmZvOjpjcmVhdGUoKQorICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm86OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0
TmFtZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoaWQpKTsKIAogICAgICAgICBjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShpZCk7CkBA
IC04MjMsNyArODIzLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NT
UHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3IKICAgICAgICAgICAgIHBy
b3BlcnRpZXMtPmFkZEl0ZW0ocHJvcGVydHkucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+PiBsb25naGFuZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGxvbmdoYW5kcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2hvcnRoYW5k
Lmxlbmd0aCgpOyArK2opIHsKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgbG9uZ2hhbmRJRCA9
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbal07CiAgICAgICAgICAgICBsb25naGFuZHMtPmFkZEl0
ZW0oZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGxvbmdoYW5kSUQpKTsKQEAgLTg1NCw3ICs4NTQsNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuc3R5bGVS
ZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpCit2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0
KQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9tQWdlbnQtPmFzc2VydERvY3VtZW50
KGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCk7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAgLTg2
Myw3ICs4NjMsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0
aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvYwogICAgIG1fbmFtZWRGbG93Q29s
bGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1lZEZs
b3dzKCktPm5hbWVkRmxvd3MoKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+PiBuYW1lZEZsb3dz
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiBuYW1lZEZsb3dz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpO
YW1lZEZsb3c+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1l
ZEZsb3c+Pjo6aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0ICE9IG5h
bWVkRmxvd3NWZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIGl0LT5nZXQoKSwgZG9jdW1lbnRO
b2RlSWQpKTsKQEAgLTg4MCw3ICs4ODAsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgU3RyaW5nIG5ld1N0eWxlU2hlZXRJ
ZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICAgICAgUmVmUHRy
PEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9
IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBh
Z2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGluc3BlY3RvclN0eWxlU2hlZXQg
PSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShtX2RvbUFnZW50LT5w
YWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIsIHRoaXMpOwogICAgICAgICBtX2lkVG9J
bnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNoZWV0SWQsIGluc3BlY3RvclN0eWxlU2hl
ZXQpOwogICAgICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGVsZW1lbnQsIGlu
c3BlY3RvclN0eWxlU2hlZXQpOwogICAgICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldC5n
ZXQoKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBpbnQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50
Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4g
ZG9jdW1lbnROb2RlSWQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHls
ZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
KiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpjb2xsZWN0U3R5bGVTaGVldHMoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiogcmVzdWx0KQogewogICAg
IEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVl
dChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCkpOwogICAgIHJlc3VsdC0+
YWRkSXRlbShpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZv
KCkpOwpAQCAtOTgzLDcgKzk4Myw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNT
U0FnZW50Ojp2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiBkb2N1bWVuCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgU3RyaW5nIGlkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0
U3R5bGVTaGVldElkKyspOwotICAgIGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpjcmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCksIGlkLCBjc3NTdHlsZVNoZWV0
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46Okluc3BlY3Rv
ciwgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSwgdGhpcyk7
CisgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZSht
X2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgaWQsIGNzc1N0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6SW5zcGVjdG9yLCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKICAgICBtX2lkVG9JbnNwZWN0
b3JTdHlsZVNoZWV0LnNldChpZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgbV9jc3NTdHls
ZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChjc3NTdHlsZVNoZWV0LCBpbnNwZWN0b3JT
dHlsZVNoZWV0KTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChkb2N1
bWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CkBAIC0xMDAwLDIyICsxMDAwLDIyIEBAIEluc3Bl
Y3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojphc3NlcnRTdHlsZVNoZWV0Rm9ySWQo
RXJyb3JTdHJpbmcqIGVycm9yCiAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKIH0KIAotSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIEluc3BlY3RvckNTU0Fn
ZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KQorSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3Jp
Z2luIEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0
eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogewotICAgIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4gPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXI7CisgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcjsKICAgICBpZiAocGFnZVN0eWxlU2hl
ZXQgJiYgIXBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVldC0+aHJl
ZigpLmlzRW1wdHkoKSkKLSAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpVc2VyQWdlbnQ7CisgICAgICAgIG9yaWdpbiA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50OwogICAgIGVs
c2UgaWYgKHBhZ2VTdHlsZVNoZWV0ICYmIHBhZ2VTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBw
YWdlU3R5bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVudCIpCi0g
ICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6VXNlcjsKKyAgICAgICAgb3JpZ2luID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luOjpVc2VyOwogICAgIGVsc2UgewogICAgICAgICBJbnNwZWN0b3JTdHls
ZVNoZWV0KiB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXIgPSB2aWFJbnNwZWN0b3JTdHls
ZVNoZWV0KG93bmVyRG9jdW1lbnQsIGZhbHNlKTsKICAgICAgICAgaWYgKHZpYUluc3BlY3RvclN0
eWxlU2hlZXRGb3JPd25lciAmJiBwYWdlU3R5bGVTaGVldCA9PSB2aWFJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9yT3duZXItPnBhZ2VTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICBvcmlnaW4gPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46Okluc3BlY3RvcjsKKyAg
ICAgICAgICAgIG9yaWdpbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6SW5zcGVjdG9yOwogICAgIH0KICAgICByZXR1cm4gb3JpZ2luOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqIHN0eWxlUnVsZSwgU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlcikKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NSdWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSog
c3R5bGVSdWxlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewogICAgIGlmICghc3R5
bGVSdWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEwMjksNyArMTAyOSw3IEBAIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JD
U1NBZ2VudDo6YnVpbGRPYmplY3RGCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBp
bnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoY3Nzb21XcmFwcGVyKSA6IG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSog
cnVsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSogcnVsZSkKIHsK
ICAgICBpZiAoIXJ1bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAzOSwxNSArMTAz
OSwxNSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4g
SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0RgogICAgIHJldHVybiBpbnNwZWN0b3JTdHls
ZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpIDog
bnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCkKK1Bhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NS
dWxlPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlz
dCogcnVsZUxpc3QpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsK
ICAgICBpZiAoIXJ1bGVMaXN0KQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlTGlzdC0+bGVuZ3RoKCk7IGkgPCBz
aXplOyArK2kpIHsKICAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gYXNDU1NTdHlsZVJ1bGUo
cnVsZUxpc3QtPml0ZW0oaSkpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBydWxlT2Jq
ZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwogICAgICAgICBpZiAoIXJ1bGVPYmplY3Qp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKHJ1bGVPYmpl
Y3QpOwpAQCAtMTA1NSwxOCArMTA1NSwxOCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+CiAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IHJlc3VsdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gcmVzdWx0ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0
Y2g+OjpjcmVhdGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaGVkUnVs
ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXNbaV0tPmlzU3R5bGVS
dWxlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU3R5bGVSdWxlKiBtYXRjaGVk
U3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4obWF0Y2hlZFJ1bGVzW2ldLmdldCgp
KTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4g
cnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHlsZVJl
c29sdmVyKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVs
ZT4gcnVsZU9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUnVsZShtYXRjaGVkU3R5bGVSdWxlLCBzdHls
ZVJlc29sdmVyKTsKICAgICAgICAgaWYgKCFydWxlT2JqZWN0KQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBt
YXRjaGluZ1NlbGVjdG9ycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNy
ZWF0ZSgpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4g
bWF0Y2hpbmdTZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVh
dGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBtYXRj
aGVkU3R5bGVSdWxlLT5zZWxlY3Rvckxpc3QoKTsKICAgICAgICAgbG9uZyBpbmRleCA9IDA7CiAg
ICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZp
cnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3Rv
cikpIHsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+CiAgICAg
ICAgICAgICAgICAgbWF0Y2hpbmdTZWxlY3RvcnMtPmFkZEl0ZW0oaW5kZXgpOwogICAgICAgICAg
ICAgKytpbmRleDsKICAgICAgICAgfQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpSdWxlTWF0Y2g+IG1hdGNoID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpSdWxlTWF0Y2g6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlJ1bGVNYXRjaD4gbWF0Y2ggPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVN
YXRjaDo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRSdWxlKHJ1bGVPYmplY3QpCiAgICAgICAg
ICAgICAuc2V0TWF0Y2hpbmdTZWxlY3RvcnMobWF0Y2hpbmdTZWxlY3RvcnMpOwogICAgICAgICBy
ZXN1bHQtPmFkZEl0ZW0obWF0Y2gpOwpAQCAtMTA4NCw3ICsxMDg0LDcgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OlJ1bGVNYXRjaD4KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCogZWxlbWVudCkKK1Bhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKCFlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xMTAxLDIyICsxMTAxLDIyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0CiAgICAg
cmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0eWxlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpSZWdpb24+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZWdpb25MaXN0
LCBpbnQgZG9jdW1lbnROb2RlSWQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1JlZlB0
cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQogewotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OlJlZ2lvbj4+IHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lv
bj4+IHJlZ2lvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHJlZ2lvbkxpc3QtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQgcmVnaW9uT3ZlcnNldDsKKyAgICAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQgcmVnaW9u
T3ZlcnNldDsKIAogICAgICAgICBzd2l0Y2ggKHRvRWxlbWVudChyZWdpb25MaXN0LT5pdGVtKGkp
KS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsKICAgICAgICAgY2FzZSBSZWdpb25GaXQ6Ci0gICAg
ICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdp
b246OlJlZ2lvbk92ZXJzZXQ6OkZpdDsKKyAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVnaW9uRW1wdHk6Ci0gICAgICAgICAgICByZWdp
b25PdmVyc2V0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92
ZXJzZXQ6OkVtcHR5OworICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbXB0eTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFJlZ2lvbk92ZXJzZXQ6Ci0gICAgICAgICAgICByZWdpb25PdmVy
c2V0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6
Ok92ZXJzZXQ7CisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6Ok92ZXJzZXQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBSZWdpb25VbmRlZmluZWQ6CiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTExMjUsNyArMTEyNSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OlJlZ2lvbj4gcmVnaW9uID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb246OmNy
ZWF0ZSgpCiAgICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChyZWdpb25PdmVyc2V0KQogICAg
ICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0ZWQKICAgICAg
ICAgICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9yU3Ry
aW5nLCBkb2N1bWVudE5vZGVJZCwgcmVnaW9uTGlzdC0+aXRlbShpKSkpOwpAQCAtMTEzNiwxNyAr
MTEzNiwxNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gSQogICAgIHJldHVybiByZWdpb25zLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5h
bWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGlu
dCBkb2N1bWVudE5vZGVJZCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpO
YW1lZEZsb3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBp
bnQgZG9jdW1lbnROb2RlSWQpCiB7CiAgICAgUmVmUHRyPE5vZGVMaXN0PiBjb250ZW50TGlzdCA9
IHdlYmtpdE5hbWVkRmxvdy0+Z2V0Q29udGVudCgpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBjb250ZW50ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PGludD4+IGNvbnRlbnQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVh
dGUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3Ro
KCk7ICsraSkgewogICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3Nl
cnRlZAogICAgICAgICBjb250ZW50LT5hZGRJdGVtKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9u
dGVuZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIGNvbnRlbnRMaXN0LT5pdGVtKGkpKSk7
CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93PiBuYW1lZEZsb3cgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdzo6
Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+
IG5hbWVkRmxvdyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUo
KQogICAgICAgICAuc2V0RG9jdW1lbnROb2RlSWQoZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIC5z
ZXROYW1lKHdlYmtpdE5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpKQogICAgICAgICAuc2V0T3Zl
cnNldCh3ZWJraXROYW1lZEZsb3ctPm92ZXJzZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggMTc1NWQ3MjBjMzE1ZTJlZDhjMWRhNjA0ZjIw
NWY2YmJkZTlkMDE1ZS4uZWRjYWYxNzJlNTI0ZDZiOWE4MjFhZjIxN2UyZGFkYTc0NjQwOGEyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTEw
OSwyMSArMTA5LDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29u
dGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50RWxl
bWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0cik7CiAgICAgdm9pZCBkaWRV
bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZs
b3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0
ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21w
dXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxp
bmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRl
SW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpQc2V1ZG9JZE1hdGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRT
dHlsZUVudHJ5Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRI
ZWFkZXI+PiYgc3R5bGVTaGVldEluZm9zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHJlc3Vs
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVk
ZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1h
dGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNo
ZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1
bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJv
cGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4
LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9y
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYg
cnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVz
dWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGll
cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBjb25zdCBTdHJpbmcm
IHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50
IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRl
eCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHJ1
bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZFJ1
bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcykg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JT
dHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9y
U3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0KSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBTdHlsZVNoZWV0QWN0aW9uOwpAQCAtMTQ0LDIw
ICsxNDQsMjAgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGUqIGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVtZW50KTsKICAgICBFbGVtZW50
KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1l
bnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsKLSAgICB2b2lkIGNvbGxlY3RT
dHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiopOworICAg
IHZvaWQgY29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
Kik7CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBiaW5kU3R5bGVTaGVldChDU1NTdHlsZVNo
ZWV0Kik7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogdmlhSW5zcGVjdG9yU3R5bGVTaGVldChE
b2N1bWVudCosIGJvb2wgY3JlYXRlSWZBYnNlbnQpOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXQq
IGFzc2VydFN0eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwotICAg
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBkZXRlY3RPcmln
aW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50
KTsKLQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiBidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYpOwotICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVj
dEZvclJ1bGUoQ1NTU3R5bGVSdWxlKik7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWls
ZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1h
dGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmli
dXRlc1N0eWxlKEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJh
eUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiwgaW50IGRvY3Vt
ZW50Tm9kZUlkKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyosIFdlYktpdE5h
bWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5
bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOworCisgICAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1
bGUqLCBTdHlsZVJlc29sdmVyJik7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCopOworICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmpl
Y3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBidWls
ZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQg
ZG9jdW1lbnROb2RlSWQpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiwgV2ViS2l0
TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAogICAgIC8vIEluc3BlY3RvckRPTUFn
ZW50OjpET01MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1v
dmVEb2N1bWVudChEb2N1bWVudCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYjJjYjRjNjQwZDY1ZWY1NDM1ODM2ZmZm
NTdlM2U0M2M3MDdmNjFjNy4uY2I3ZTdkYTVkZDJiM2M3YzlmMTkzYzA5NjA4OTE0YWUxN2EyYmY2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC0yMzIsNyArMjMyLDcgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2Vu
dCgpCiAgICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRP
TUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CkBAIC00MjIsNyArNDIyLDcgQEAgRWxlbWVudCogSW5zcGVjdG9yRE9N
QWdlbnQ6OmFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRE
b2N1bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpET006Ok5vZGU+JiByb290KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9j
dW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPiYgcm9vdCkKIHsKICAgICBtX2RvY3VtZW50UmVxdWVzdGVkID0gdHJ1ZTsK
IApAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5v
ZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkLCBpbnQgZGVwdGgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFp
bmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBjaGlsZHJl
biA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZU1hcCk7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMobm9kZUlkLCBjaGlsZHJl
bi5yZWxlYXNlKCkpOwogfQogCkBAIC01NDAsNyArNTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IGNvbnMKICAgICAgICAgKmVsZW1lbnRJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoZWxlbWVu
dC5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3JBbGwo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1bHQp
Cit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgcmVzdWx0KQogewogICAgIE5vZGUqIG5v
ZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKQEAg
LTU1Nyw3ICs1NTcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yQWxs
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50
Pjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50
Pjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZXMtPmxlbmd0
aCgpOyArK2kpCiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KG5vZGVzLT5pdGVtKGkpKSk7CkBAIC01ODgsNyArNTg4LDcgQEAgaW50IEluc3BlY3RvckRPTUFn
ZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgICAg
ICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAg
ICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdO
b2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwotICAgICAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRP
TTo6Tm9kZT4+IGNoaWxkcmVuID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlPj4gY2hpbGRyZW4gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCBkYW5nbGluZ01hcCkpOwogICAgICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNldENoaWxkTm9kZXMoMCwgY2hpbGRyZW4pOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC04MDksOSArODA5LDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29u
c3QKICAgICBtX2RvbUVkaXRvci0+cmVwbGFjZVdob2xlVGV4dCh0b1RleHQobm9kZSksIHZhbHVl
LCBlcnJvclN0cmluZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJz
QXJyYXkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KQogewotICAgIGxpc3Rl
bmVyc0FycmF5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPjo6Y3JlYXRlKCk7CisgICAgbGlzdGVuZXJzQXJy
YXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkV2ZW50TGlzdGVuZXI+OjpjcmVhdGUoKTsKICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShl
cnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKQEAg
LTg3Niw3ICs4NzYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVy
cyhOb2RlKiBub2RlLCBWZWN0b3I8RXZlbnRMaXN0ZW5lckluZm8+JgogICAgIH0KIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMpCit2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykKIHsK
ICAgICBOb2RlKiBub2RlID0gYXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBp
ZiAoIW5vZGUpCkBAIC05MjYsNyArOTI2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVy
Zm9ybVNlYXJjaChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgd2gKICAg
ICAqcmVzdWx0Q291bnQgPSByZXN1bHRzVmVjdG9yLnNpemUoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIG5vZGVJZHMpCit2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYgbm9kZUlkcykKIHsKICAgICBTZWFy
Y2hSZXN1bHRzOjppdGVyYXRvciBpdCA9IG1fc2VhcmNoUmVzdWx0cy5maW5kKHNlYXJjaElkKTsK
ICAgICBpZiAoaXQgPT0gbV9zZWFyY2hSZXN1bHRzLmVuZCgpKSB7CkBAIC05NDAsNyArOTQwLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
KyAgICBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7ICsraSkKICAgICAgICAg
bm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKChpdC0+dmFsdWUpW2ldLmdl
dCgpKSk7CiB9CkBAIC0xMTg2LDcgKzExODYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpm
b2N1cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgZWxlbWVudC0+
Zm9jdXMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVj
dEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVj
dEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiYgcmVzdWx0KQogewogICAgIFN0cmluZyBvYmplY3RHcm91cE5hbWUgPSBvYmplY3RHcm91cCA/
ICpvYmplY3RHcm91cCA6ICIiOwogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsK
QEAgLTExOTQsNyArMTE5NCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2Rl
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgKmVy
cm9yU3RyaW5nID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4gb2JqZWN0ID0gcmVzb2x2ZU5vZGUobm9kZSwgb2JqZWN0R3JvdXBOYW1lKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBv
YmplY3QgPSByZXNvbHZlTm9kZShub2RlLCBvYmplY3RHcm91cE5hbWUpOwogICAgIGlmICghb2Jq
ZWN0KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJOb2RlIHdpdGggZ2l2ZW4gaWQgZG9lcyBu
b3QgYmVsb25nIHRvIHRoZSBkb2N1bWVudCI7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMDIsNyAr
MTIwMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICByZXN1bHQgPSBvYmplY3Q7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8U3RyaW5nPj4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0
ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkKIHsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1l
bnQpCkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBzdGF0aWMgU3RyaW5nIGRvY3VtZW50QmFzZVVSTFN0
cmluZyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIGRvY3VtZW50LT5jb21wbGV0ZVVS
TCgiIikuc3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5v
ZGUsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
ck5vZGUoTm9kZSogbm9kZSwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7CiAg
ICAgaW50IGlkID0gYmluZChub2RlLCBub2Rlc01hcCk7CiAgICAgU3RyaW5nIG5vZGVOYW1lOwpA
QCAtMTI2Miw3ICsxMjYyLDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck4KICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT4gdmFsdWUgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU6OmNyZWF0ZSgpCisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gdmFsdWUgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXROb2RlSWQoaWQp
CiAgICAgICAgIC5zZXROb2RlVHlwZShzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPm5vZGVUeXBlKCkp
KQogICAgICAgICAuc2V0Tm9kZU5hbWUobm9kZU5hbWUpCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTgogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkg
ewogICAgICAgICBpbnQgbm9kZUNvdW50ID0gaW5uZXJDaGlsZE5vZGVDb3VudChub2RlKTsKICAg
ICAgICAgdmFsdWUtPnNldENoaWxkTm9kZUNvdW50KG5vZGVDb3VudCk7Ci0gICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2Rl
LCBkZXB0aCwgbm9kZXNNYXApOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBidWlsZEFy
cmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVzTWFwKTsKICAgICAgICAg
aWYgKGNoaWxkcmVuLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICB2YWx1ZS0+c2V0Q2hpbGRy
ZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKICAgICB9CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yTgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSBlbGVtZW50LT5zaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+PiBzaGFkb3dSb290cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZT4+IHNoYWRvd1Jvb3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBzaGFkb3dSb290cy0+
YWRkSXRlbShidWlsZE9iamVjdEZvck5vZGUocm9vdCwgMCwgbm9kZXNNYXApKTsKICAgICAgICAg
ICAgIHZhbHVlLT5zZXRTaGFkb3dSb290cyhzaGFkb3dSb290cyk7CiAgICAgICAgIH0KQEAgLTEz
MjksOSArMTMyOSw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOCiAgICAgcmV0dXJuIHZhbHVl
LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1
dGVzKEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJp
YnV0ZXMoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPj4gYXR0cmlidXRlc1ZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IGF0dHJpYnV0ZXNWYWx1ZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIC8vIEdvIHRocm91Z2ggYWxsIGF0dHJp
YnV0ZXMgYW5kIHNlcmlhbGl6ZSB0aGVtLgogICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlc1ZhbHVlLnJlbGVhc2UoKTsKQEAgLTEzNDMs
OSArMTM0Myw5IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3Ry
aW5nPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGCiAgICAgcmV0dXJuIGF0dHJpYnV0
ZXNWYWx1ZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwg
aW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+
IGNoaWxkcmVuID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGNoaWxkcmVuID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
Pjo6Y3JlYXRlKCk7CiAgICAgaWYgKGRlcHRoID09IDApIHsKICAgICAgICAgLy8gU3BlY2lhbC1j
YXNlIHRoZSBvbmx5IHRleHQgY2hpbGQgLSBwcmV0ZW5kIHRoYXQgY29udGFpbmVyJ3MgY2hpbGRy
ZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZC4KICAgICAgICAgTm9kZSogZmlyc3RDaGlsZCA9IGNvbnRh
aW5lci0+Zmlyc3RDaGlsZCgpOwpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+PiBJbnMKICAgICByZXR1cm4gY2hpbGRyZW4ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpCitQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwSWQpCiB7CiAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIgPSByZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lci5saXN0ZW5lcjsKIApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE8KICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IHZhbHVlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RE9NOjpFdmVudExpc3RlbmVyOjpjcmVhdGUoKQorICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkV2ZW50TGlzdGVuZXI+IHZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpFdmVudExpc3RlbmVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0VHlwZShldmVudFR5cGUpCiAg
ICAgICAgIC5zZXRVc2VDYXB0dXJlKHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUp
CiAgICAgICAgIC5zZXRJc0F0dHJpYnV0ZShldmVudExpc3RlbmVyLT5pc0F0dHJpYnV0ZSgpKQpA
QCAtMTQwNyw3ICsxNDA3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE8KICAgICAgICAgICAg
IHZhbHVlLT5zZXRIYW5kbGVyKGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGhhbmRsZXIpLCAqb2JqZWN0R3JvdXBJZCkpOwogICAg
IH0KICAgICBpZiAoIXNjcmlwdElELmlzTnVsbCgpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQorICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKICAgICAgICAg
ICAgIC5zZXRTY3JpcHRJZChzY3JpcHRJRCkKICAgICAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGxp
bmVOdW1iZXIpOwogICAgICAgICB2YWx1ZS0+c2V0TG9jYXRpb24obG9jYXRpb24ucmVsZWFzZSgp
KTsKQEAgLTE0MTcsMTQgKzE0MTcsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE8KICAgICBy
ZXR1cm4gdmFsdWUucmVsZWFzZSgpOwogfQogICAgIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IGF4T2JqZWN0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4m
IGNoaWxkTm9kZUlkcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnByb2Nlc3NBY2Nlc3NpYmls
aXR5Q2hpbGRyZW4oUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBheE9iamVjdCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiBjaGlsZE5vZGVJZHMpCiB7CiAg
ICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBheE9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICBpZiAo
IWNoaWxkcmVuLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmICghY2hpbGRO
b2RlSWRzKQotICAgICAgICBjaGlsZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAgICAgY2hpbGROb2RlSWRzID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZE9iamVjdCA6IGNoaWxkcmVuKSB7CiAgICAgICAgIGlmIChOb2RlKiBjaGlsZE5vZGUg
PSBjaGlsZE9iamVjdC0+bm9kZSgpKQpAQCAtMTQzNCw3ICsxNDM0LDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmoKICAgICB9CiB9CiAgICAgCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKiBub2RlKQorUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlKTsKICAgICBpZiAoIW5vZGUpCkBAIC0xNDQ1LDMxICsxNDQ1LDMx
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iCiAKICAgICBOb2RlKiBhY3RpdmVEZXNjZW5kYW50
Tm9kZSA9IG51bGxwdHI7CiAgICAgYm9vbCBidXN5ID0gZmFsc2U7Ci0gICAgVHlwZUJ1aWxkZXI6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQgY2hlY2tlZCA9IFR5cGVCdWls
ZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpGYWxzZTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gY2hpbGROb2RlSWRzOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBjb250cm9sbGVk
Tm9kZUlkczsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzOjpDaGVja2VkIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpGYWxzZTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8aW50Pj4gY2hpbGROb2RlSWRzOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBjb250cm9sbGVkTm9kZUlkczsKICAgICBib29sIGV4
aXN0cyA9IGZhbHNlOwogICAgIGJvb2wgZXhwYW5kZWQgPSBmYWxzZTsKICAgICBib29sIGRpc2Fi
bGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGlu
dD4+IGZsb3dlZE5vZGVJZHM7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PGludD4+IGZsb3dlZE5vZGVJZHM7CiAgICAgYm9vbCBmb2N1c2VkID0gZmFsc2U7CiAgICAgYm9v
bCBpZ25vcmVkID0gdHJ1ZTsKICAgICBib29sIGlnbm9yZWRCeURlZmF1bHQgPSBmYWxzZTsKLSAg
ICBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZCBpbnZh
bGlkID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQ6
OkZhbHNlOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM6OkludmFsaWQgaW52YWxpZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNz
aWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQ6OkZhbHNlOwogICAgIGJvb2wgaGlkZGVuID0gZmFs
c2U7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIGJvb2wgbGl2ZVJlZ2lvbkF0b21pYyA9IGZhbHNl
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBsaXZl
UmVnaW9uUmVsZXZhbnQ7Ci0gICAgVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM6OkxpdmVSZWdpb25TdGF0dXMgbGl2ZVJlZ2lvblN0YXR1cyA9IFR5cGVCdWlsZGVyOjpE
T006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZlUmVnaW9uU3RhdHVzOjpPZmY7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGxpdmVSZWdpb25SZWxl
dmFudDsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0
aWVzOjpMaXZlUmVnaW9uU3RhdHVzIGxpdmVSZWdpb25TdGF0dXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZlUmVnaW9uU3RhdHVzOjpPZmY7
CiAgICAgTm9kZSogbW91c2VFdmVudE5vZGUgPSBudWxscHRyOwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBvd25lZE5vZGVJZHM7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IG93bmVkTm9kZUlkczsKICAgICBOb2RlKiBw
YXJlbnROb2RlID0gbnVsbHB0cjsKICAgICBib29sIHByZXNzZWQgPSBmYWxzZTsKICAgICBib29s
IHJlYWRvbmx5ID0gZmFsc2U7CiAgICAgYm9vbCByZXF1aXJlZCA9IGZhbHNlOwogICAgIFN0cmlu
ZyByb2xlOwogICAgIGJvb2wgc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gc2VsZWN0ZWRDaGlsZE5vZGVJZHM7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+IHNlbGVjdGVkQ2hpbGROb2RlSWRz
OwogICAgIGJvb2wgc3VwcG9ydHNDaGVja2VkID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0V4
cGFuZGVkID0gZmFsc2U7CiAgICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24gPSBmYWxzZTsKQEAg
LTE0OTQsMTEgKzE0OTQsMTEgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAgICAg
IGlmIChzdXBwb3J0c0NoZWNrZWQpIHsKICAgICAgICAgICAgICAgICBpbnQgY2hlY2tWYWx1ZSA9
IGF4T2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpOyAvLyBFbGVtZW50IHVzaW5nIGFyaWEt
Y2hlY2tlZC4KICAgICAgICAgICAgICAgICBpZiAoY2hlY2tWYWx1ZSA9PSAxKQotICAgICAgICAg
ICAgICAgICAgICBjaGVja2VkID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM6OkNoZWNrZWQ6OlRydWU7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpU
cnVlOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrVmFsdWUgPT0gMikKLSAgICAgICAg
ICAgICAgICAgICAgY2hlY2tlZCA9IFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzOjpDaGVja2VkOjpNaXhlZDsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6
Ok1peGVkOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF4T2JqZWN0LT5pc0NoZWNrZWQoKSkg
Ly8gTmF0aXZlIGNoZWNrYm94LgotICAgICAgICAgICAgICAgICAgICBjaGVja2VkID0gVHlwZUJ1
aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNrZWQ6OlRydWU7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNrZWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzOjpDaGVja2VkOjpUcnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKGF4T2JqZWN0
LCBjaGlsZE5vZGVJZHMpOwpAQCAtMTUwNyw3ICsxNTA3LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2IKICAgICAgICAgICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGNvbnRyb2xsZWRFbGVtZW50
czsKICAgICAgICAgICAgICAgICBheE9iamVjdC0+ZWxlbWVudHNGcm9tQXR0cmlidXRlKGNvbnRy
b2xsZWRFbGVtZW50cywgYXJpYV9jb250cm9sc0F0dHIpOwogICAgICAgICAgICAgICAgIGlmIChj
b250cm9sbGVkRWxlbWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xs
ZWROb2RlSWRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoRWxl
bWVudCogY29udHJvbGxlZEVsZW1lbnQgOiBjb250cm9sbGVkRWxlbWVudHMpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250cm9sbGVkTm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKGNvbnRyb2xsZWRFbGVtZW50KSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTUyNCw3
ICsxNTI0LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJv
cGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAgICAgICAgICBWZWN0
b3I8RWxlbWVudCo+IGZsb3dlZEVsZW1lbnRzOwogICAgICAgICAgICAgICAgIGF4T2JqZWN0LT5l
bGVtZW50c0Zyb21BdHRyaWJ1dGUoZmxvd2VkRWxlbWVudHMsIGFyaWFfZmxvd3RvQXR0cik7CiAg
ICAgICAgICAgICAgICAgaWYgKGZsb3dlZEVsZW1lbnRzLnNpemUoKSkgewotICAgICAgICAgICAg
ICAgICAgICBmbG93ZWROb2RlSWRzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50
Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGZsb3dlZE5vZGVJZHMgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICAgICAg
Zm9yIChFbGVtZW50KiBmbG93ZWRFbGVtZW50IDogZmxvd2VkRWxlbWVudHMpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG93ZWROb2RlSWRzLT5hZGRJdGVtKHB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQoZmxvd2VkRWxlbWVudCkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1NDEsMTMgKzE1NDEs
MTMgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGll
cz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAgICAgIAogICAgICAgICAgICAg
U3RyaW5nIGludmFsaWRWYWx1ZSA9IGF4T2JqZWN0LT5pbnZhbGlkU3RhdHVzKCk7CiAgICAgICAg
ICAgICBpZiAoaW52YWxpZFZhbHVlID09ICJmYWxzZSIpCi0gICAgICAgICAgICAgICAgaW52YWxp
ZCA9IFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpJbnZhbGlkOjpG
YWxzZTsKKyAgICAgICAgICAgICAgICBpbnZhbGlkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6RmFsc2U7CiAgICAgICAgICAgICBl
bHNlIGlmIChpbnZhbGlkVmFsdWUgPT0gImdyYW1tYXIiKQotICAgICAgICAgICAgICAgIGludmFs
aWQgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6
R3JhbW1hcjsKKyAgICAgICAgICAgICAgICBpbnZhbGlkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52YWxpZDo6R3JhbW1hcjsKICAgICAgICAg
ICAgIGVsc2UgaWYgKGludmFsaWRWYWx1ZSA9PSAic3BlbGxpbmciKQotICAgICAgICAgICAgICAg
IGludmFsaWQgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6SW52
YWxpZDo6U3BlbGxpbmc7CisgICAgICAgICAgICAgICAgaW52YWxpZCA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQ6OlNwZWxsaW5nOwog
ICAgICAgICAgICAgZWxzZSAvLyBGdXR1cmUgdmVyc2lvbnMgb2YgQVJJQSBtYXkgYWxsb3cgYWRk
aXRpb25hbCB0cnV0aHkgdmFsdWVzLiBFeC4gZm9ybWF0LCBvcmRlciwgb3Igc2l6ZS4KLSAgICAg
ICAgICAgICAgICBpbnZhbGlkID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3Bl
cnRpZXM6OkludmFsaWQ6OlRydWU7CisgICAgICAgICAgICAgICAgaW52YWxpZCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkludmFsaWQ6OlRydWU7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChheE9iamVjdC0+aXNBUklBSGlkZGVuKCkg
fHwgYXhPYmplY3QtPmlzRE9NSGlkZGVuKCkpCiAgICAgICAgICAgICAgICAgaGlkZGVuID0gdHJ1
ZTsKQEAgLTE1NjEsMTAgKzE1NjEsMTAgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAg
ICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50QXR0clZhbHVlID0gYXhPYmplY3QtPmFyaWFM
aXZlUmVnaW9uUmVsZXZhbnQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWFyaWFSZWxldmFudEF0
dHJWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFBhc3Mg
ZW51bSB2YWx1ZXMgcmF0aGVyIHRoYW4gc3RyaW5ncyBvbmNlIHVuYmxvY2tlZC4gaHR0cDovL3dl
YmtpdC5vcmcvYi8xMzM3MTEKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFu
dEFkZGl0aW9ucyA9IFR5cGVCdWlsZGVyOjpnZXRXZWJFbnVtQ29uc3RhbnRWYWx1ZShUeXBlQnVp
bGRlcjo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OkFkZGl0aW9ucyk7Ci0gICAgICAgICAgICAg
ICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRSZW1vdmFscyA9IFR5cGVCdWlsZGVyOjpnZXRXZWJF
bnVtQ29uc3RhbnRWYWx1ZShUeXBlQnVpbGRlcjo6RE9NOjpMaXZlUmVnaW9uUmVsZXZhbnQ6OlJl
bW92YWxzKTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSBU
eXBlQnVpbGRlcjo6Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUoVHlwZUJ1aWxkZXI6OkRPTTo6TGl2
ZVJlZ2lvblJlbGV2YW50OjpUZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJl
bGV2YW50ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZhbnRBZGRpdGlvbnMgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpnZXRXZWJFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6QWRkaXRpb25zKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFJlbW92YWxzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpMaXZlUmVn
aW9uUmVsZXZhbnQ6OlJlbW92YWxzKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFS
ZWxldmFudFRleHQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRXZWJFbnVtQ29uc3RhbnRWYWx1
ZShJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkxpdmVSZWdpb25SZWxldmFudDo6VGV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgICAgICBjb25zdCBT
cGFjZVNwbGl0U3RyaW5nJiB2YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0
dHJWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIEBhcmlhLXJlbGV2YW50PSJh
bGwiIGlzIGV4cG9zZWQgYXMgWyJhZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiXSwgaW4gb3Jk
ZXIuCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb3JkZXIgaXMgY29udHJvbGxlZCBpbiBX
ZWJDb3JlIGFuZCBleHBlY3RlZCBpbiBXZWJJbnNwZWN0b3JVSS4KQEAgLTE1ODQsOSArMTU4NCw5
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iCiAKICAgICAgICAgICAgICAgICBTdHJpbmcgYXJp
YUxpdmUgPSBheE9iamVjdC0+YXJpYUxpdmVSZWdpb25TdGF0dXMoKTsKICAgICAgICAgICAgICAg
ICBpZiAoYXJpYUxpdmUgPT0gImFzc2VydGl2ZSIpCi0gICAgICAgICAgICAgICAgICAgIGxpdmVS
ZWdpb25TdGF0dXMgPSBUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6
TGl2ZVJlZ2lvblN0YXR1czo6QXNzZXJ0aXZlOworICAgICAgICAgICAgICAgICAgICBsaXZlUmVn
aW9uU3RhdHVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllczo6TGl2ZVJlZ2lvblN0YXR1czo6QXNzZXJ0aXZlOwogICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGFyaWFMaXZlID09ICJwb2xpdGUiKQotICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9u
U3RhdHVzID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkxpdmVS
ZWdpb25TdGF0dXM6OlBvbGl0ZTsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblN0YXR1
cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6Okxp
dmVSZWdpb25TdGF0dXM6OlBvbGl0ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGF4T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkpCkBAIC0xNTk2LDcgKzE1OTYs
NyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYgogICAgICAgICAgICAgICAgIFZlY3RvcjxFbGVt
ZW50Kj4gb3duZWRFbGVtZW50czsKICAgICAgICAgICAgICAgICBheE9iamVjdC0+ZWxlbWVudHNG
cm9tQXR0cmlidXRlKG93bmVkRWxlbWVudHMsIGFyaWFfb3duc0F0dHIpOwogICAgICAgICAgICAg
ICAgIGlmIChvd25lZEVsZW1lbnRzLnNpemUoKSkgewotICAgICAgICAgICAgICAgICAgICBvd25l
ZE5vZGVJZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgb3duZWROb2RlSWRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoRWxlbWVudCog
b3duZWRFbGVtZW50IDogb3duZWRFbGVtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgIG93
bmVkTm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG93bmVkRWxlbWVudCkp
OwogICAgICAgICAgICAgICAgIH0KQEAgLTE2MjIsNyArMTYyMiw3IEBAIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iCiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKICAgICAgICAgICAgIGF4T2JqZWN0LT5z
ZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4pOwogICAgICAgICAgICAgaWYgKHNlbGVj
dGVkQ2hpbGRyZW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVJ
ZHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgICAgICBzZWxlY3RlZENoaWxkTm9kZUlkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PGludD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgc2VsZWN0ZWRD
aGlsZE9iamVjdCA6IHNlbGVjdGVkQ2hpbGRyZW4pIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KE5vZGUqIHNlbGVjdGVkQ2hpbGROb2RlID0gc2VsZWN0ZWRDaGlsZE9iamVjdC0+bm9kZSgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZE5vZGVJZHMtPmFkZEl0ZW0ocHVz
aE5vZGVQYXRoVG9Gcm9udGVuZChzZWxlY3RlZENoaWxkTm9kZSkpOwpAQCAtMTYzMSw3ICsxNjMx
LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGll
cz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2IKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IHZhbHVl
ID0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OmNyZWF0ZSgpCisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM+IHZhbHVlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllczo6Y3JlYXRlKCkKICAgICAgICAgLnNldEV4aXN0cyhleGlzdHMpCiAgICAgICAgIC5zZXRM
YWJlbChsYWJlbCkKICAgICAgICAgLnNldFJvbGUocm9sZSkKQEAgLTE2NjAsNyArMTY2MCw3IEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iCiAgICAgICAgICAgICB2YWx1ZS0+c2V0SWdub3JlZChp
Z25vcmVkKTsKICAgICAgICAgaWYgKGlnbm9yZWRCeURlZmF1bHQpCiAgICAgICAgICAgICB2YWx1
ZS0+c2V0SWdub3JlZEJ5RGVmYXVsdChpZ25vcmVkQnlEZWZhdWx0KTsKLSAgICAgICAgaWYgKGlu
dmFsaWQgIT0gVHlwZUJ1aWxkZXI6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkludmFs
aWQ6OkZhbHNlKQorICAgICAgICBpZiAoaW52YWxpZCAhPSBJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpJbnZhbGlkOjpGYWxzZSkKICAgICAgICAgICAg
IHZhbHVlLT5zZXRJbnZhbGlkKGludmFsaWQpOwogICAgICAgICBpZiAoaGlkZGVuKQogICAgICAg
ICAgICAgdmFsdWUtPnNldEhpZGRlbihoaWRkZW4pOwpAQCAtMTc2NCw3ICsxNzY0LDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZVJlbW92ZWQocGFyZW50SWQsIGZyYW1l
T3duZXJJZCk7CiAgICAgdW5iaW5kKGZyYW1lT3duZXIsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXAp
OwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gdmFsdWUg
PSBidWlsZE9iamVjdEZvck5vZGUoZnJhbWVPd25lciwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1h
cCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gdmFsdWUgPSBi
dWlsZE9iamVjdEZvck5vZGUoZnJhbWVPd25lciwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7
CiAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxpbmcoZnJhbWVP
d25lcik7CiAgICAgaW50IHByZXZJZCA9IHByZXZpb3VzU2libGluZyA/IG1fZG9jdW1lbnROb2Rl
VG9JZE1hcC5nZXQocHJldmlvdXNTaWJsaW5nKSA6IDA7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIHZhbHVlLnJlbGVhc2UoKSk7
CkBAIC0xNzk0LDcgKzE3OTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRE
T01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIENoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0
ZWQgLT4gcmV0dXJuIHZhbHVlIG9mIGEgbmV3IGNoaWxkLgogICAgICAgICBOb2RlKiBwcmV2U2li
bGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKG5vZGUpOwogICAgICAgICBpbnQgcHJldklkID0g
cHJldlNpYmxpbmcgPyBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHByZXZTaWJsaW5nKSA6IDA7
Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+IHZhbHVl
ID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1
aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2
SWQsIHZhbHVlLnJlbGVhc2UoKSk7CiAgICAgfQogfQpAQCAtMTg1OSw3ICsxODU5LDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcmIG4KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRy
aWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cykKIHsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbm9kZUlkcyA9IElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiBub2RlSWRzID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6
ZSA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBFbGVtZW50KiBl
bGVtZW50ID0gZWxlbWVudHMuYXQoaSk7CiAgICAgICAgIGludCBpZCA9IGJvdW5kTm9kZUlkKGVs
ZW1lbnQpOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVz
aE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLAogICAg
IH0KIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIG9iamVjdEdyb3VwKQorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShOb2Rl
KiBub2RlLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogewogICAgIEZyYW1lKiBmcmFtZSA9
IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAyOGQ3YjIzNmIyNTI3OTZj
NzExZTAzMDE2YzliZDQyODIwNDk5M2JmLi5kOTdlZGI3MGE5OWFjNmZiYjQxMTA3ZjIxYjBhMTAw
MmFiNzY0ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaApAQCAtMTE5LDggKzExOSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIE1ldGhvZHMgY2FsbGVk
IGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KICAgICB2aXJ0dWFs
IHZvaWQgcXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3JzLCBpbnQqIGVsZW1lbnRJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcm
IHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiBy
ZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmlu
ZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdl
dERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4mIHJvb3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hpbGROb2Rl
cyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCogZGVwdGgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyosIGludCBlbGVt
ZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqLCBpbnQg
ZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyogbmFtZSkgb3ZlcnJp
ZGU7CkBAIC0xMzAsMTMgKzEzMCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldE91
dGVySFRNTChFcnJvclN0cmluZyosIGludCBub2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG91dGVySFRNTCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zv
ck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBXVEY6OlN0cmluZyogb2JqZWN0
R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+
JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldEFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9w
ZXJ0aWVzKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElkLCBp
bnQqIHJlc3VsdENvdW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNoUmVz
dWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgs
IGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4m
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4mKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNlYXJjaElkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYg
cmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5n
KiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBoaWdobGlnaHRDb25maWcpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Tm9k
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CkBAIC0xODMs
NyArMTgzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyBkb2N1bWVudFVSTFN0cmlu
ZyhEb2N1bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc29sdmVOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4gcmVzb2x2ZU5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzcygpOwogICAgIGJvb2wgaGFuZGxlVG91Y2hF
dmVudChOb2RlKik7CiAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRU
ZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CkBAIC0yMzAsMTIgKzIzMCwxMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3Qs
IHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9u
LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbik7CiAK
LSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gYnVpbGRP
YmplY3RGb3JOb2RlKE5vZGUqLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKik7Ci0gICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBidWlsZEFycmF5Rm9y
RWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gYnVp
bGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBO
b2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgTm9kZSosIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCk7Ci0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWls
ZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzKE5vZGUqKTsKLSAgICB2b2lkIHByb2Nl
c3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Piwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+Jik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IGJ1aWxkT2JqZWN0Rm9yTm9kZShO
b2RlKiwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVz
KEVsZW1lbnQqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGls
ZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4g
YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqLCBjb25zdCBTdHJpbmcqIG9i
amVjdEdyb3VwSWQpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllcyhOb2RlKik7CisgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKFBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxpbnQ+PiYpOwogICAgIAogICAgIE5vZGUqIG5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCk7CiAgICAgTm9kZSogbm9kZUZvck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDRhNGIzOGYyYjVjNWI4YjA2MjA2OGU4NWY5OTNkNWU5ZTAwODlk
NGIuLmM1NTk3MTFkMDI1MzMyYzMyNzAxZmVmNTkzMDRkMjNhODI2YTkxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRl
c2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwbwogICAgIGlmICgo
MSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2sp
IHsKICAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBu
b2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3Bv
aW50LgogICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwg
c28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9k
b21BZ2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNr
dHJhY2VPYmplY3RHcm91cCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IHRhcmdldE5vZGVPYmplY3QgPSBtX2RvbUFnZW50LT5yZXNv
bHZlTm9kZSh0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdy
b3VwKTsKICAgICAgICAgZGVzY3JpcHRpb24tPnNldFZhbHVlKCJ0YXJnZXROb2RlIiwgdGFyZ2V0
Tm9kZU9iamVjdCk7CiAKICAgICAgICAgLy8gRmluZCBicmVha3BvaW50IG93bmVyIG5vZGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCmluZGV4IDAzOWI3NDU4YjA4ZGY1MzczMzVhOTE2MjY5MGM3MmQzNmUzMTlkYmQuLjA0
YzQ5OTRjNjcyOWNjNGRlZjc0ZGUzYTA1MzdiM2QxOTU2ZjJjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxlKEVycm9y
U3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+Pj4mIGl0ZW1zKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3Jh
Z2VJdGVtcyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQogewogICAgIEZyYW1lKiBm
cmFtZTsKICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VB
cmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKQEAgLTEwNCwxMyArMTA0LDEzIEBA
IHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPj4+IHN0b3JhZ2VJdGVtcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+OjpjcmVhdGUoKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPj4+IHN0b3JhZ2VJdGVtcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+OjpjcmVhdGUoKTsKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdG9yYWdlQXJlYS0+bGVuZ3RoKCk7ICsraSkgewog
ICAgICAgICBTdHJpbmcga2V5ID0gc3RvcmFnZUFyZWEtPmtleShpKTsKICAgICAgICAgU3RyaW5n
IHZhbHVlID0gc3RvcmFnZUFyZWEtPml0ZW0oa2V5KTsKIAotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGVudHJ5LT5hZGRJdGVtKGtleSk7CiAg
ICAgICAgIGVudHJ5LT5hZGRJdGVtKHZhbHVlKTsKICAgICAgICAgc3RvcmFnZUl0ZW1zLT5hZGRJ
dGVtKGVudHJ5LnJlbGVhc2UoKSk7CkBAIC0xNTgsOSArMTU4LDkgQEAgU3RyaW5nIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFN0b3JhZ2UqIHN0b3JhZ2UpCiAgICAgcmV0dXJu
IHN0b3JhZ2VJZChzZWN1cml0eU9yaWdpbi5nZXQoKSwgaXNMb2NhbFN0b3JhZ2UpLT50b0pTT05T
dHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET01TdG9y
YWdlOjpTdG9yYWdlSWQ+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGJvb2wgaXNMb2NhbFN0b3JhZ2UpCiB7Ci0gICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6Y3JlYXRlKCkKKyAgICByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpjcmVhdGUoKQogICAgICAgICAuc2V0
U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4tPnRvUmF3U3RyaW5nKCkpCiAgICAgICAgIC5z
ZXRJc0xvY2FsU3RvcmFnZShpc0xvY2FsU3RvcmFnZSkucmVsZWFzZSgpOwogfQpAQCAtMTcwLDcg
KzE3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0
b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uCiAgICAgaWYgKCFtX2Zyb250ZW5kRGlz
cGF0Y2hlciB8fCAhbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3JhZ2VJ
ZChzZWN1cml0eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBpZCA9IHN0b3Jh
Z2VJZChzZWN1cml0eU9yaWdpbiwgc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKTsKIAogICAg
IGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21TdG9y
YWdlSXRlbXNDbGVhcmVkKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCAwNTcyOGYxZmNlMzYzOWQyZjZhMjBlYTE1
ZGNkOTk0NjVjOTIzYTFiLi4yODIwZjExNzUxZjIxYWJmOThlMDZlMjkwYjMzMmNiOTliYWM4MjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCkBAIC02MywxMyArNjMsMTMgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9t
IHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz4+PiYgaXRlbXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9y
YWdlSXRlbXMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKIAog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCiAgICAgU3RyaW5nIHN0b3Jh
Z2VJZChTdG9yYWdlKik7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T01TdG9yYWdlOjpTdG9yYWdlSWQ+IHN0b3JhZ2VJZChTZWN1cml0eU9yaWdpbiosIGJvb2wgaXNM
b2NhbFN0b3JhZ2UpOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NU3Rv
cmFnZTo6U3RvcmFnZUlkPiBzdG9yYWdlSWQoU2VjdXJpdHlPcmlnaW4qLCBib29sIGlzTG9jYWxT
dG9yYWdlKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgog
ICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBl
LCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBkOTM4YWI1MzllM2ViYzZjMjg1
OGI0YzQ2OWNlNzI4YjgxZjdlYjUxLi4zMDk5ZDY1NmVkMGI5MjBmYzM5NjJiOGRlMjhhN2NiN2Fj
NTNiNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSB7CiAKIHZvaWQgcmVw
b3J0VHJhbnNhY3Rpb25GYWlsZWQoRXhlY3V0ZVNRTENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2ss
IFNRTEVycm9yKiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGF0YWJhc2U6OkVycm9yPiBlcnJvck9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRh
dGFiYXNlOjpFcnJvcjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiBlcnJvck9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcjo6Y3JlYXRlKCkKICAgICAgICAgLnNldE1lc3NhZ2UoZXJyb3ItPm1lc3NhZ2Uo
KSkKICAgICAgICAgLnNldENvZGUoZXJyb3ItPmNvZGUoKSk7CiAgICAgcmVxdWVzdENhbGxiYWNr
LT5zZW5kU3VjY2VzcyhudWxscHRyLCBudWxscHRyLCBlcnJvck9iamVjdC5yZWxlYXNlKCkpOwpA
QCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFNRTFJlc3VsdFNldFJv
d0xpc3QqIHJvd0xpc3QgPSByZXN1bHRTZXQtPnJvd3MoKTsKIAotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBjb2x1bW5zID0gcm93TGlzdC0+Y29sdW1uTmFtZXMoKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2x1bW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAg
Y29sdW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uc1tpXSk7CiAKLSAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVlPj4gdmFsdWVzID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+OjpjcmVhdGUoKTsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3RvclZhbHVlPj4gdmFs
dWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+OjpjcmVhdGUo
KTsKICAgICAgICAgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgZGF0YSA9IHJvd0xpc3QtPnZhbHVl
cygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IHJvd0xpc3QtPnZhbHVlcygpW2ld
OwpAQCAtMjU0LDE0ICsyNTQsMTQgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNh
YmxlKEVycm9yU3RyaW5nKikKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVy
cm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+PiYgbmFtZXMpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBu
YW1lcykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAgICAqZXJyb3IgPSAiRGF0YWJh
c2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bmFtZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsK
KyAgICBuYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OwogCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gZGF0YWJhc2VGb3JJZChkYXRhYmFzZUlkKTsK
ICAgICBpZiAoZGF0YWJhc2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IGM1NjE1NTYzYTNlOGI3NTk1NWQwZGEwZDVlOTZl
ODZiMDdmYTBhMzcuLmEzNTVhZmMwYTZlZGYxYjI3MzVjMjI0OWJlZGRmOTQxMjYyMmM4MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
aApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250
LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5n
Pj4mIG5hbWVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5h
bWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+KSBv
dmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBzY3JpcHQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5jcHAKaW5kZXggZjg0OTk4ZWE2ZTkyNGQwZTNmMmZmOWNhZmFjODRkNzUzOGNiN2VmMC4uYWE0
OTZmY2U3YjVjMjZjN2ZlOTQ4NDYzMDQ4MGMxNGIxYjc5ZGQxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAt
NjAsNyArNjAsNyBAQCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlKFBhc3NSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYQogCiB2b2lkIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2U6OmJpbmQoSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIq
IGRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U+IGpzb25PYmplY3QgPSBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEYXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZT4ganNvbk9iamVjdCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpEYXRhYmFzZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldElk
KG1faWQpCiAgICAgICAgIC5zZXREb21haW4obV9kb21haW4pCiAgICAgICAgIC5zZXROYW1lKG1f
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCmluZGV4IDdmZDYyOTFjOTEwN2YzOGViNDEzYTYxOTFhNzY3NzBiNTczY2Uy
MzcuLmY3NGE1ODRlNTczMTdmNDBkNTVkNmVhODc1YTVjYzRjNDE0NzZkYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApA
QCAtNjcsMTQgKzY3LDE0IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk7Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OkRhdGFi
YXNlV2l0aE9iamVjdFN0b3JlczsKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4
ZWREQjo6RGF0YUVudHJ5OwotdXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERC
OjpLZXk7Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVBhdGg7
Ci11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVJhbmdlOwotdXNp
bmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKLXVzaW5n
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKK3Vz
aW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5OwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SW5kZXhlZERCOjpEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXM7Cit1c2luZyBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbmRleGVkREI6OkRhdGFFbnRyeTsKK3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkluZGV4ZWREQjo6S2V5OwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERC
OjpLZXlQYXRoOwordXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5n
ZTsKK3VzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU7Cit1
c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg7CiAK
IHR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlIFJlcXVlc3RDYWxsYmFjazsKIHR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JJbmRleGVk
REJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sg
UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZGF0YWJhc2VOYW1l
c0xpc3QgPSByZXF1ZXN0UmVzdWx0LT5kb21TdHJpbmdMaXN0KCk7Ci0gICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBkYXRhYmFzZU5hbWVzID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBkYXRhYmFzZU5hbWVzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lc0xpc3QtPmxlbmd0aCgpOyArK2kpCiAg
ICAgICAgICAgICBkYXRhYmFzZU5hbWVzLT5hZGRJdGVtKGRhdGFiYXNlTmFtZXNMaXN0LT5pdGVt
KGkpKTsKICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKGRhdGFiYXNlTmFt
ZXMucmVsZWFzZSgpKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlQ
YXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKICAgICAg
ICAga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJy
YXkpOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5n
Pj4gYXJyYXkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGFy
cmF5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAg
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdBcnJheSA9IGlkYktleVBhdGguYXJyYXko
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJpbmdBcnJheS5zaXplKCk7ICsr
aSkKICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZ0FycmF5W2ldKTsKQEAgLTI4Miwx
MCArMjgyLDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
IGRhdGFiYXNlTWV0YWRhdGEgPSBpZGJEYXRhYmFzZS0+bWV0YWRhdGEoKTsKIAotICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZT4+IG9iamVjdFN0b3JlcyA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0
U3RvcmU+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+PiBvYmplY3RT
dG9yZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpJ
bmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CiAKICAgICAgICAgZm9yIChjb25zdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhIDogZGF0YWJhc2VNZXRh
ZGF0YS5vYmplY3RTdG9yZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6
Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4Pj4gaW5kZXhl
cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4
ZWREQjo6T2JqZWN0U3RvcmVJbmRleD46OmNyZWF0ZSgpOwogCiAgICAgICAgICAgICBmb3IgKGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEgOiBvYmplY3RTdG9yZU1ldGFkYXRh
LmluZGV4ZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8T2JqZWN0U3RvcmVJ
bmRleD4gb2JqZWN0U3RvcmVJbmRleCA9IE9iamVjdFN0b3JlSW5kZXg6OmNyZWF0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cAppbmRleCBhMDM3ZmE4Y2M5NzBjY2RmYzYxZjhhODg2NGE5ODk2YWNmMzdkOWQwLi5hNjlkZjFh
ZDU4MjgyNmEyNjMzNzZkNzg2YTMxMmExZmZkNjY1M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTEwNiw5ICsx
MDYsOSBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpwc2V1ZG9FbGVtZW50RGVzdHJv
eWVkKFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbgogICAgIHVuYmluZFBzZXVkb0VsZW1lbnQo
cHNldWRvRWxlbWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVy
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXll
cnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6
TGF5ZXI+PiYgbGF5ZXJzKQogewotICAgIGxheWVycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+OjpjcmVhdGUo
KTsKKyAgICBsYXllcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7CiAKICAgICBOb2RlKiBub2RlID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpLT5ub2RlRm9ySWQobm9k
ZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZAogICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVy
cm9yU3RyaW5nLCByZW5kZXJlciwgbGF5ZXJzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpM
YXllcj4+JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXll
cnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykKIHsKICAgICBp
ZiAocmVuZGVyZXItPmhhc0xheWVyKCkpIHsKICAgICAgICAgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5k
ZXJMYXllckhpZXJhcmNoeShlcnJvclN0cmluZywgdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJl
bmRlcmVyKS0+bGF5ZXIoKSwgbGF5ZXJzKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNo
eShFcnJvclN0cmluZwogICAgICAgICBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJh
cmNoeShlcnJvclN0cmluZywgcmVuZGVyZXIsIGxheWVycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXll
clRyZWU6OkxheWVyPj4mIGxheWVycykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Omdh
dGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mIGxheWVycykK
IHsKICAgICBpZiAocmVuZGVyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKQogICAgICAgICBsYXllcnMt
PmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JMYXllcihlcnJvclN0cmluZywgcmVuZGVyTGF5ZXIpKTsK
QEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnYXRoZXJM
YXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nKgogICAgICAgICBnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJMYXll
ciwgbGF5ZXJzKTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXll
clRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXll
cihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK1Bh
c3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9ICZyZW5kZXJMYXllci0+cmVuZGVyZXIoKTsKICAgICBSZW5kZXJMYXllckJhY2tpbmcq
IGJhY2tpbmcgPSByZW5kZXJMYXllci0+YmFja2luZygpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1CiAgICAgICAgIG5vZGUgPSByZW5kZXJlci0+cGFyZW50KCkt
PmVsZW1lbnQoKTsKIAogICAgIC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBsYXllck9iamVjdCA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI6OmNyZWF0ZSgpCisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+IGxheWVyT2JqZWN0
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKICAgICAg
ICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikpCiAgICAgICAgIC5zZXROb2RlSWQoaWRG
b3JOb2RlKGVycm9yU3RyaW5nLCBub2RlKSkKICAgICAgICAgLnNldEJvdW5kcyhidWlsZE9iamVj
dEZvckludFJlY3QocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKQpAQCAtMjE3
LDE2ICsyMTcsMTYgQEAgaW50IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjppZEZvck5vZGUoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBOb2RlKiBub2RlKQogICAgIHJldHVybiBub2RlSWQ7CiB9
CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0
PiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6
SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdChj
b25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpMYXllclRyZWU6OkludFJlY3Q6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFgocmVjdC54
KCkpCiAgICAgICAgIC5zZXRZKHJlY3QueSgpKQogICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0
aCgpKQogICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpLnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mIGNv
bXBvc2l0aW5nUmVhc29ucykKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNG
b3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBsYXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpDb21wb3Np
dGluZ1JlYXNvbnM+JiBjb21wb3NpdGluZ1JlYXNvbnMpCiB7CiAgICAgY29uc3QgUmVuZGVyTGF5
ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOwogCkBAIC0yMzYsNyAr
MjM2LDcgQEAgdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVhc29uc0ZvckNvbXBvc2l0
aW5nTGF5ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW4KICAgICB9CiAKICAgICBDb21wb3NpdGlu
Z1JlYXNvbnMgcmVhc29uc0JpdG1hc2sgPSByZW5kZXJMYXllci0+Y29tcG9zaXRvcigpLnJlYXNv
bnNGb3JDb21wb3NpdGluZygqcmVuZGVyTGF5ZXIpOwotICAgIGNvbXBvc2l0aW5nUmVhc29ucyA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFzb25zOjpj
cmVhdGUoKTsKKyAgICBjb21wb3NpdGluZ1JlYXNvbnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpM
YXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29uczo6Y3JlYXRlKCk7CiAKICAgICBpZiAocmVhc29u
c0JpdG1hc2sgJiBDb21wb3NpdGluZ1JlYXNvbjNEVHJhbnNmb3JtKQogICAgICAgICBjb21wb3Np
dGluZ1JlYXNvbnMtPnNldFRyYW5zZm9ybTNEKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCBkYzRjYWQzMWZlZDA5
MWM3OTNkZTJmMjg3OWNhYzBlYjlhNjcxZjQwLi42ZDg0YzliYzBhMTdlYWU1NzYzNTExZDU5YzU1
ZmUxNGM1YWVhNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
cldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVy
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNs
dWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JXZWJQ
cm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYzLDE5ICs2MywxOSBA
QCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9y
Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRy
ZWU6OkxheWVyPj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhc29uc0ZvckNvbXBv
c2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICAvLyBSZW5kZXJMYXllci1yZWxhdGVkIG1ldGhvZHMuCiAg
ICAgU3RyaW5nIGJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAgICB2b2lkIHVuYmluZChjb25z
dCBSZW5kZXJMYXllciopOwogCi0gICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVj
dEhpZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRlck9iamVjdCosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6Okxh
eWVyPj4mKTsKLSAgICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyTGF5ZXJIaWVyYXJjaHko
RXJyb3JTdHJpbmcqLCBSZW5kZXJMYXllciosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPj4mKTsKKyAg
ICB2b2lkIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KEVycm9yU3RyaW5n
KiwgUmVuZGVyT2JqZWN0KiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZvaWQgZ2F0aGVyTGF5
ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRlckxheWVyKiwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Okxh
eWVyVHJlZTo6TGF5ZXI+PiYpOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKEVycm9yU3RyaW5nKiwg
UmVuZGVyTGF5ZXIqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJlY3QmKTsK
KyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1
aWxkT2JqZWN0Rm9yTGF5ZXIoRXJyb3JTdHJpbmcqLCBSZW5kZXJMYXllciopOworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVj
dEZvckludFJlY3QoY29uc3QgSW50UmVjdCYpOwogCiAgICAgaW50IGlkRm9yTm9kZShFcnJvclN0
cmluZyosIE5vZGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAppbmRleCAyNTI3YjkzNDQ1N2EyMjdmZDI5YmE0ZGU2ZmRkODMyNmQwNzdl
ODAzLi43MzE0MDU4OTFhMTAwYjc5OTkwOGU5Y2QxNDlmYmNmNzI3ODMwZGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMjc2LDI3
ICsyNzYsMjcgQEAgQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVz
b3VyY2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gY2FjaGVkUmVz
b3VyY2U7CiB9CiAKLUluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24oSW5zcGVjdG9yUGFnZUFnZW50OjpS
ZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKQorSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVz
b3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbihJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUpCiB7CiAgICAgc3dpdGNoIChyZXNv
dXJjZVR5cGUpIHsKICAgICBjYXNlIERvY3VtZW50UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkRvY3VtZW50OworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpEb2N1
bWVudDsKICAgICBjYXNlIEltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkltYWdlOworICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpJbWFnZTsKICAgICBjYXNl
IEZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBh
Z2U6OlJlc291cmNlVHlwZTo6Rm9udDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OlJlc291cmNlVHlwZTo6Rm9udDsKICAgICBjYXNlIFN0eWxlc2hlZXRSZXNvdXJj
ZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNl
VHlwZTo6U3R5bGVzaGVldDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OlJlc291cmNlVHlwZTo6U3R5bGVzaGVldDsKICAgICBjYXNlIFNjcmlwdFJlc291cmNlOgot
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBl
OjpTY3JpcHQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNv
dXJjZVR5cGU6OlNjcmlwdDsKICAgICBjYXNlIFhIUlJlc291cmNlOgotICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpYSFI7CisgICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6OlhIUjsKICAg
ICBjYXNlIFdlYlNvY2tldFJlc291cmNlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6UmVzb3VyY2VUeXBlOjpXZWJTb2NrZXQ7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGU6OldlYlNvY2tldDsKICAgICBj
YXNlIE90aGVyUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpQYWdlOjpSZXNvdXJjZVR5cGU6Ok90aGVyOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlOjpPdGhlcjsKICAgICB9Ci0gICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CisgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZTo6T3RoZXI7CiB9CiAK
IEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKQEAg
LTMyNCw3ICszMjQsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZShjb25zdCBDYQogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2U7CiB9CiAKLUluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlBhZ2U6OlJlc291cmNlVHlwZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNl
VHlwZUpzb24oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQorSW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7
CiAgICAgcmV0dXJuIHJlc291cmNlVHlwZUpzb24oY2FjaGVkUmVzb3VyY2VUeXBlKGNhY2hlZFJl
c291cmNlKSk7CiB9CkBAIC00MjEsOSArNDIxLDkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
Om5hdmlnYXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgZnJhbWUubG9h
ZGVyKCkuY2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
ZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIsIExvY2tIaXN0b3J5OjpObywg
TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0
IENvb2tpZSYgY29va2llKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkK
IHsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llOjpjcmVh
dGUoKQorICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU6OmNyZWF0
ZSgpCiAgICAgICAgIC5zZXROYW1lKGNvb2tpZS5uYW1lKQogICAgICAgICAuc2V0VmFsdWUoY29v
a2llLnZhbHVlKQogICAgICAgICAuc2V0RG9tYWluKGNvb2tpZS5kb21haW4pCkBAIC00MzYsOSAr
NDM2LDkgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShjb24KICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gYnVpbGRBcnJheUZvckNvb2tpZXMoTGlz
dEhhc2hTZXQ8Q29va2llPiYgY29va2llc0xpc3QpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiBi
dWlsZEFycmF5Rm9yQ29va2llcyhMaXN0SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlzdCkKIHsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6UGFnZTo6Q29va2llPj4gY29va2llcyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT46OmNyZWF0ZSgpOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpDb29raWU+PiBjb29raWVzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKGF1
dG8mIGNvb2tpZSA6IGNvb2tpZXNMaXN0KQogICAgICAgICBjb29raWVzLT5hZGRJdGVtKGJ1aWxk
T2JqZWN0Rm9yQ29va2llKGNvb2tpZSkpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHN0YXRpYyBWZWN0
b3I8VVJMPiBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29raWVzKQordm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMpCiB7
CiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBMaXN0SGFzaFNldDxDb29r
aWU+IHJhd0Nvb2tpZXNMaXN0OwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6CiAgICAgaWYgKHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkKICAgICAgICAgY29va2llcyA9
IGJ1aWxkQXJyYXlGb3JDb29raWVzKHJhd0Nvb2tpZXNMaXN0KTsKICAgICBlbHNlCi0gICAgICAg
IGNvb2tpZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFn
ZTo6Q29va2llPjo6Y3JlYXRlKCk7CisgICAgICAgIGNvb2tpZXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+OjpjcmVhdGUoKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC01MzUsNyAr
NTM1LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY28KICAgICAgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOwogfQogCi12
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYgb2Jq
ZWN0KQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJlZShFcnJvclN0cmlu
ZyosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4m
IG9iamVjdCkKIHsKICAgICBvYmplY3QgPSBidWlsZE9iamVjdEZvckZyYW1lVHJlZSgmbV9wYWdl
LT5tYWluRnJhbWUoKSk7CiB9CkBAIC01NjIsOSArNTYyLDkgQEAgc3RhdGljIGJvb2wgdGV4dENv
bnRlbnRGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFN0
cmluZyoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0
aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJ
c1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQogewotICAgIHJlc3Vs
dHMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0cyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBl
czo6U2VhcmNoTWF0Y2g+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFs
SXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNhc2VTZW5zaXRp
dmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0aXZlIDogZmFs
c2U7CkBAIC01OTYsMTggKzU5NiwxOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNo
SW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgYwogICAgIHJl
c3VsdHMgPSBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpzZWFyY2hJblRleHRCeUxpbmVzKGNvbnRl
bnQsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVj
dEZvclNlYXJjaFJlc3VsdChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgbWF0Y2hlc0NvdW50KQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UGFnZTo6U2VhcmNoUmVzdWx0PiBidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbWF0Y2hlc0NvdW50KQogewot
ICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ6OmNy
ZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3Vs
dDo6Y3JlYXRlKCkKICAgICAgICAgLnNldFVybCh1cmwpCiAgICAgICAgIC5zZXRGcmFtZUlkKGZy
YW1lSWQpCiAgICAgICAgIC5zZXRNYXRjaGVzQ291bnQobWF0Y2hlc0NvdW50KQogICAgICAgICAu
cmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJj
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qg
b3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdHMpCiB7Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4+IHNlYXJjaFJlc3VsdHMgPSBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4gc2VhcmNoUmVzdWx0cyA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3Vs
dD46OmNyZWF0ZSgpOwogCiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9w
dGlvbmFsSXNSZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTkzNiw5
ICs5MzYsOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2NyaXB0c0VuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNjcmlwdHNFbmFibGVkKGlzRW5h
YmxlZCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJh
bWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZShGcmFtZSogZnJhbWUp
CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZT4gZnJhbWVPYmplY3QgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRJZChmcmFtZUlkKGZy
YW1lKSkKICAgICAgICAgLnNldExvYWRlcklkKGxvYWRlcklkKGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKSkKICAgICAgICAgLnNldFVybChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCkpCkBAIC05NTYsMTYgKzk1NiwxNiBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rgog
ICAgIHJldHVybiBmcmFtZU9iamVjdDsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWls
ZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSogZnJhbWUpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RG
b3JGcmFtZShmcmFtZSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+PiBzdWJyZXNvdXJj
ZXMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpQYWdlOjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiByZXN1bHQgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRP
YmplY3RGb3JGcmFtZShmcmFtZSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+PiBzdWJyZXNvdXJj
ZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpGcmFtZVJlc291cmNlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRlKCkKICAgICAgICAgIC5zZXRGcmFtZShm
cmFtZU9iamVjdCkKICAgICAgICAgIC5zZXRSZXNvdXJjZXMoc3VicmVzb3VyY2VzKTsKIAogICAg
IGZvciAoYXV0byogY2FjaGVkUmVzb3VyY2UgOiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShmcmFt
ZSkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6
RnJhbWVSZXNvdXJjZTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2U+IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRVcmwo
Y2FjaGVkUmVzb3VyY2UtPnVybCgpKQogICAgICAgICAgICAgLnNldFR5cGUoY2FjaGVkUmVzb3Vy
Y2VUeXBlSnNvbigqY2FjaGVkUmVzb3VyY2UpKQogICAgICAgICAgICAgLnNldE1pbWVUeXBlKGNh
Y2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwpAQCAtOTc5LDEwICs5NzksMTAg
QEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNl
VHJlZT4gSW5zcGVjdG9yUGFnZUFnZW50OjoKICAgICAgICAgc3VicmVzb3VyY2VzLT5hZGRJdGVt
KHJlc291cmNlT2JqZWN0KTsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRy
ZWU+PiBjaGlsZHJlbkFycmF5OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4+IGNoaWxkcmVu
QXJyYXk7CiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAgICAg
IGlmICghY2hpbGRyZW5BcnJheSkgewotICAgICAgICAgICAgY2hpbGRyZW5BcnJheSA9IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZy
YW1lUmVzb3VyY2VUcmVlPjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBjaGlsZHJlbkFycmF5ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJh
bWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2hpbGRG
cmFtZXMoY2hpbGRyZW5BcnJheSk7CiAgICAgICAgIH0KICAgICAgICAgY2hpbGRyZW5BcnJheS0+
YWRkSXRlbShidWlsZE9iamVjdEZvckZyYW1lVHJlZShjaGlsZCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGRiYzQ5MTI1NGMxOTEyYTll
YzBkMjVmNzRhNGM1M2I3Y2IxYThlNzEuLjExMDY3MGVkMGIzNzgwNGU5OTA0YzVmMThiMGQwN2Qw
ZTQ1YTllNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKQEAgLTkwLDkgKzkwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEoRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHRl
eHRFbmNvZGluZ05hbWUpOwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UoRnJhbWUqLCBjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUpzb24oUmVzb3VyY2VUeXBlKTsKKyAg
ICBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNl
VHlwZUpzb24oUmVzb3VyY2VUeXBlKTsKICAgICBzdGF0aWMgUmVzb3VyY2VUeXBlIGNhY2hlZFJl
c291cmNlVHlwZShjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihj
b25zdCBDYWNoZWRSZXNvdXJjZSYpOworICAgIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQ
YWdlOjpSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNv
dXJjZSYpOwogCiAgICAgLy8gUGFnZSBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwpAQCAtMTAxLDEyICsxMDEs
MTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25M
b2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogb3B0aW9uYWxJ
Z25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJv
clN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29va2llcykgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6Q29va2llPj4mIGNvb2tpZXMp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29udGVudCwgYm9vbCog
YmFzZTY0RW5jb2RlZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3Vy
Y2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0
Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0
IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3Qg
Ym9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpH
ZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29s
KiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4m
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wg
c2hvdykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNhblNob3dEZWJ1Z0JvcmRlcnMoRXJy
b3JTdHJpbmcqLCBib29sKikgb3ZlcnJpZGU7CkBAIC0xNzAsOCArMTcwLDggQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwgYm9vbCB3aXRoQmFz
ZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZGF0YUNvbnRlbnQo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKIAotICAgIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGJ1aWxkT2JqZWN0
Rm9yRnJhbWUoRnJhbWUqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSop
OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFt
ZSopOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggZjQ4MGM1NDA3M2MwMDI3NTQ0ZWZh
NDhjOWZhYjVlMWMxNGRhMmY0Yi4uYzE0ODdhMDk3MTMyNjc2MTAyYzI2NGJkZDMxYTc3MGNkYmY2
NzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxh
eUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5
QWdlbnQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiRnVuY3RvcklucHV0Q3Vyc29y
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYlByb3RvY29sVHlwZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAg
LTU0LDE5ICs1NCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxh
eVBvc2l0aW9uPiBidWlsZEluc3BlY3Rvck9iamVjdEZvclBvc2l0aW9uKGNvbnN0IFJlcGxheVBv
c2l0aW9uJiBwb3NpdGlvbikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yUG9zaXRpb24o
Y29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9uKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4gcG9zaXRpb25PYmplY3QgPSBUeXBlQnVpbGRlcjo6
UmVwbGF5OjpSZXBsYXlQb3NpdGlvbjo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4gcG9zaXRpb25PYmplY3QgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uOjpjcmVhdGUoKQogICAgICAgICAu
c2V0U2VnbWVudE9mZnNldChwb3NpdGlvbi5zZWdtZW50T2Zmc2V0KQogICAgICAgICAuc2V0SW5w
dXRPZmZzZXQocG9zaXRpb24uaW5wdXRPZmZzZXQpOwogCiAgICAgcmV0dXJuIHBvc2l0aW9uT2Jq
ZWN0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxh
eTo6UmVwbGF5SW5wdXQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQoY29uc3QgTm9uZGV0
ZXJtaW5pc3RpY0lucHV0QmFzZSYgaW5wdXQsIHNpemVfdCBvZmZzZXQpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0PiBidWlsZEluc3Bl
Y3Rvck9iamVjdEZvcklucHV0KGNvbnN0IE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UmIGlucHV0
LCBzaXplX3Qgb2Zmc2V0KQogewogICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkSW5wdXQgPSBFbmNv
ZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlPjo6ZW5jb2RlVmFsdWUoaW5wdXQp
OwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dD4gaW5wdXRPYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlJbnB1dDo6Y3JlYXRlKCkKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlJbnB1dD4gaW5wdXRPYmplY3Qg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0OjpjcmVhdGUoKQogICAg
ICAgICAuc2V0VHlwZShpbnB1dC50eXBlKCkpCiAgICAgICAgIC5zZXRPZmZzZXQob2Zmc2V0KQog
ICAgICAgICAuc2V0RGF0YShlbmNvZGVkSW5wdXQuYXNPYmplY3QoKSk7CkBAIC03NCwxNSArNzQs
MTUgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXQ+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQKICAgICByZXR1cm4gaW5wdXRPYmplY3QucmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBs
YXlTZXNzaW9uPiBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlc3Npb24oUGFzc1JlZlB0cjxSZXBs
YXlTZXNzaW9uPiBwcnBTZXNzaW9uKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlc3Np
b24oUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBwcnBTZXNzaW9uKQogewogICAgIFJlZlB0cjxS
ZXBsYXlTZXNzaW9uPiBzZXNzaW9uID0gcHJwU2Vzc2lvbjsKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFNlZ21lbnRJZGVudGlmaWVyPj4gc2VnbWVudHMgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8U2VnbWVudElkZW50aWZpZXI+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U2VnbWVudElkZW50aWZpZXI+PiBzZWdtZW50cyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFNlZ21lbnRJZGVudGlmaWVyPjo6Y3JlYXRlKCk7CiAKICAgICBmb3Ig
KGF1dG8gaXQgPSBzZXNzaW9uLT5iZWdpbigpOyBpdCAhPSBzZXNzaW9uLT5lbmQoKTsgKytpdCkK
ICAgICAgICAgc2VnbWVudHMtPmFkZEl0ZW0oKCppdCktPmlkZW50aWZpZXIoKSk7CiAKLSAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbk9iamVjdCA9
IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheVNlc3Npb246OmNyZWF0ZSgpCisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbk9iamVj
dCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5U2Vzc2lvbjo6Y3JlYXRlKCkK
ICAgICAgICAgLnNldElkKHNlc3Npb24tPmlkZW50aWZpZXIoKSkKICAgICAgICAgLnNldFRpbWVz
dGFtcChzZXNzaW9uLT50aW1lc3RhbXAoKSkKICAgICAgICAgLnNldFNlZ21lbnRzKHNlZ21lbnRz
LnJlbGVhc2UoKSk7CkBAIC05MCw2NSArOTAsNjUgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OlJlcGxheTo6UmVwbGF5U2Vzc2lvbj4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZXMK
ICAgICByZXR1cm4gc2Vzc2lvbk9iamVjdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBUeXBlQnVp
bGRlcjo6UmVwbGF5OjpTZXNzaW9uU3RhdGUgYnVpbGRJbnNwZWN0b3JPYmplY3RGb3JTZXNzaW9u
U3RhdGUoV2ViQ29yZTo6U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSkKK3N0YXRpYyBJbnNwZWN0
b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TdGF0ZSBidWlsZEluc3BlY3Rvck9iamVjdEZv
clNlc3Npb25TdGF0ZShXZWJDb3JlOjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKQogewogICAg
IHN3aXRjaCAoc2Vzc2lvblN0YXRlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpTZXNzaW9uU3RhdGU6
OkNhcHR1cmluZzogcmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25TdGF0ZTo6Q2Fw
dHVyaW5nOwotICAgIGNhc2UgV2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpJbmFjdGl2ZTogcmV0dXJu
IFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25TdGF0ZTo6SW5hY3RpdmU7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpTZXNzaW9uU3RhdGU6OlJlcGxheWluZzogcmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBs
YXk6OlNlc3Npb25TdGF0ZTo6UmVwbGF5aW5nOworICAgIGNhc2UgV2ViQ29yZTo6U2Vzc2lvblN0
YXRlOjpDYXB0dXJpbmc6IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Np
b25TdGF0ZTo6Q2FwdHVyaW5nOworICAgIGNhc2UgV2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpJbmFj
dGl2ZTogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblN0YXRlOjpJ
bmFjdGl2ZTsKKyAgICBjYXNlIFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6UmVwbGF5aW5nOiByZXR1
cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU3RhdGU6OlJlcGxheWluZzsK
ICAgICB9CiB9CiAKLXN0YXRpYyBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50U3RhdGUgYnVp
bGRJbnNwZWN0b3JPYmplY3RGb3JTZWdtZW50U3RhdGUoV2ViQ29yZTo6U2VnbWVudFN0YXRlIHNl
Z21lbnRTdGF0ZSkKK3N0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRT
dGF0ZSBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnRTdGF0ZShXZWJDb3JlOjpTZWdtZW50
U3RhdGUgc2VnbWVudFN0YXRlKQogewogICAgIHN3aXRjaCAoc2VnbWVudFN0YXRlKSB7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpTZWdtZW50U3RhdGU6OkFwcGVuZGluZzogcmV0dXJuIFR5cGVCdWlsZGVy
OjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6QXBwZW5kaW5nOwotICAgIGNhc2UgV2ViQ29yZTo6U2Vn
bWVudFN0YXRlOjpVbmxvYWRlZDogcmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlZ21lbnRT
dGF0ZTo6VW5sb2FkZWQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpTZWdtZW50U3RhdGU6OkxvYWRlZDog
cmV0dXJuIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6TG9hZGVkOwotICAgIGNh
c2UgV2ViQ29yZTo6U2VnbWVudFN0YXRlOjpEaXNwYXRjaGluZzogcmV0dXJuIFR5cGVCdWlsZGVy
OjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6RGlzcGF0Y2hpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpT
ZWdtZW50U3RhdGU6OkFwcGVuZGluZzogcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxh
eTo6U2VnbWVudFN0YXRlOjpBcHBlbmRpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpTZWdtZW50U3Rh
dGU6OlVubG9hZGVkOiByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZWdtZW50
U3RhdGU6OlVubG9hZGVkOworICAgIGNhc2UgV2ViQ29yZTo6U2VnbWVudFN0YXRlOjpMb2FkZWQ6
IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZTo6TG9hZGVk
OworICAgIGNhc2UgV2ViQ29yZTo6U2VnbWVudFN0YXRlOjpEaXNwYXRjaGluZzogcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRlOjpEaXNwYXRjaGluZzsKICAg
ICB9CiB9CiAKIGNsYXNzIFNlcmlhbGl6ZUlucHV0VG9KU09ORnVuY3RvciB7CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UmVw
bGF5OjpSZXBsYXlJbnB1dD4+IFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVw
bGF5SW5wdXQ+PiBSZXR1cm5UeXBlOwogCiAgICAgU2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9y
KCkKLSAgICAgICAgOiBtX2lucHV0cyhUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJl
cGxheTo6UmVwbGF5SW5wdXQ+OjpjcmVhdGUoKSkgeyB9CisgICAgICAgIDogbV9pbnB1dHMoSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBs
YXlJbnB1dD46OmNyZWF0ZSgpKSB7IH0KICAgICB+U2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9y
KCkgeyB9CiAKICAgICB2b2lkIG9wZXJhdG9yKCkoc2l6ZV90IGluZGV4LCBjb25zdCBOb25kZXRl
cm1pbmlzdGljSW5wdXRCYXNlKiBpbnB1dCkKICAgICB7CiAgICAgICAgIExPRyhXZWJSZXBsYXks
ICIlLTI1cyBXcml0aW5nICU1enU6ICVzXG4iLCAiW1NlcmlhbGl6ZUlucHV0XSIsIGluZGV4LCBp
bnB1dC0+dHlwZSgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKIAotICAgICAgICBpZiAoUmVm
UHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0PiBzZXJpYWxpemVkSW5wdXQgPSBi
dWlsZEluc3BlY3Rvck9iamVjdEZvcklucHV0KCppbnB1dCwgaW5kZXgpKQorICAgICAgICBpZiAo
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXQ+IHNlcmlhbGl6
ZWRJbnB1dCA9IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQoKmlucHV0LCBpbmRleCkpCiAg
ICAgICAgICAgICBtX2lucHV0cy0+YWRkSXRlbShzZXJpYWxpemVkSW5wdXQucmVsZWFzZSgpKTsK
ICAgICB9CiAKICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCkgeyByZXR1cm4gbV9pbnB1dHMu
cmVsZWFzZSgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXQ+PiBtX2lucHV0czsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBs
YXlJbnB1dD4+IG1faW5wdXRzOwogfTsKIAotc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2VnbWVudChQ
YXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBwcnBTZWdtZW50KQorc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4gYnVpbGRJ
bnNwZWN0b3JPYmplY3RGb3JTZWdtZW50KFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+
IHBycFNlZ21lbnQpCiB7CiAgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdtZW50
ID0gcHJwU2VnbWVudDsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpSZXBsYXk6OlJlcGxheUlucHV0UXVldWU+PiBxdWV1ZXNPYmplY3QgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZT46OmNyZWF0ZSgpOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSZXBsYXk6OlJlcGxheUlucHV0UXVldWU+PiBxdWV1ZXNPYmplY3QgPSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheUlucHV0UXVl
dWU+OjpjcmVhdGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihJbnB1dFF1ZXVlOjpDb3VudCk7IGkrKykgewogICAgICAgICBTZXJpYWxpemVJbnB1
dFRvSlNPTkZ1bmN0b3IgY29sbGVjdG9yOwogICAgICAgICBJbnB1dFF1ZXVlIHF1ZXVlID0gc3Rh
dGljX2Nhc3Q8SW5wdXRRdWV1ZT4oaSk7CiAgICAgICAgIFJlZlB0cjxGdW5jdG9ySW5wdXRDdXJz
b3I+IGZ1bmN0b3JDdXJzb3IgPSBGdW5jdG9ySW5wdXRDdXJzb3I6OmNyZWF0ZShzZWdtZW50KTsK
LSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UmVwbGF5OjpS
ZXBsYXlJbnB1dD4+IHF1ZXVlSW5wdXRzID0gZnVuY3RvckN1cnNvci0+Zm9yRWFjaElucHV0SW5R
dWV1ZShxdWV1ZSwgY29sbGVjdG9yKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5SW5wdXQ+PiBxdWV1
ZUlucHV0cyA9IGZ1bmN0b3JDdXJzb3ItPmZvckVhY2hJbnB1dEluUXVldWUocXVldWUsIGNvbGxl
Y3Rvcik7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0
UXVldWU+IHF1ZXVlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1
ZTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6
UmVwbGF5SW5wdXRRdWV1ZT4gcXVldWVPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBs
YXk6OlJlcGxheUlucHV0UXVldWU6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0VHlwZShFbmNv
ZGluZ1RyYWl0czxJbnB1dFF1ZXVlPjo6ZW5jb2RlVmFsdWUocXVldWUpLmNvbnZlcnRUbzxTdHJp
bmc+KCkpCiAgICAgICAgICAgICAuc2V0SW5wdXRzKHF1ZXVlSW5wdXRzKTsKIAogICAgICAgICBx
dWV1ZXNPYmplY3QtPmFkZEl0ZW0ocXVldWVPYmplY3QucmVsZWFzZSgpKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnRPYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudDo6Y3JlYXRlKCkKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4gc2VnbWVu
dE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ6OmNy
ZWF0ZSgpCiAgICAgICAgIC5zZXRJZChzZWdtZW50LT5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5z
ZXRUaW1lc3RhbXAoc2VnbWVudC0+dGltZXN0YW1wKCkpCiAgICAgICAgIC5zZXRRdWV1ZXMocXVl
dWVzT2JqZWN0LnJlbGVhc2UoKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBJbnNwZWN0b3JS
ZXBsYXlBZ2VudDo6Y2FuY2VsUGxheWJhY2soRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogICAg
IG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuY2FuY2VsUGxheWJhY2soKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JSZXBsYXlBZ2VudDo6c3dpdGNoU2Vzc2lvbihFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit2
b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpzd2l0Y2hTZXNzaW9uKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChpZGVudGlmaWVyID4gMCk7CiAKQEAgLTQwNCw3ICs0
MDQsNyBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojpzd2l0Y2hTZXNzaW9uKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgVHlwZUJ1aWxkZXI6OgogICAgIG1fcGFnZS5yZXBsYXlDb250cm9s
bGVyKCkuc3dpdGNoU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlB
Z2VudDo6aW5zZXJ0U2Vzc2lvblNlZ21lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBUeXBl
QnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciBzZXNzaW9uSWRlbnRpZmllciwgU2Vn
bWVudElkZW50aWZpZXIgc2VnbWVudElkZW50aWZpZXIsIGludCBzZWdtZW50SW5kZXgpCit2b2lk
IEluc3BlY3RvclJlcGxheUFnZW50OjppbnNlcnRTZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZp
ZXIgc2Vzc2lvbklkZW50aWZpZXIsIFNlZ21lbnRJZGVudGlmaWVyIHNlZ21lbnRJZGVudGlmaWVy
LCBpbnQgc2VnbWVudEluZGV4KQogewogICAgIEFTU0VSVChzZXNzaW9uSWRlbnRpZmllciA+IDAp
OwogICAgIEFTU0VSVChzZWdtZW50SWRlbnRpZmllciA+IDApOwpAQCAtNDMwLDcgKzQzMCw3IEBA
IHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omluc2VydFNlc3Npb25TZWdtZW50KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgVHlwZUJ1CiAgICAgc2Vzc2lvbk1vZGlmaWVkKHNlc3Npb24pOwog
fQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpyZW1vdmVTZXNzaW9uU2VnbWVudChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIGludCBzZWdtZW50SW5kZXgpCit2b2lkIEluc3BlY3RvclJlcGxheUFn
ZW50OjpyZW1vdmVTZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgaW50
IHNlZ21lbnRJbmRleCkKIHsKICAgICBBU1NFUlQoaWRlbnRpZmllciA+IDApOwogICAgIEFTU0VS
VChzZWdtZW50SW5kZXggPj0gMCk7CkBAIC00ODAsNyArNDgwLDcgQEAgUGFzc1JlZlB0cjxSZXBs
YXlTZXNzaW9uU2VnbWVudD4gSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmZpbmRTZWdtZW50KEVycm9y
U3RyaW5nKgogICAgIHJldHVybiBpdC0+dmFsdWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OmN1cnJlbnRSZXBsYXlTdGF0ZShFcnJvclN0cmluZyosIFR5cGVCdWlsZGVyOjpSZXBs
YXk6OlNlc3Npb25JZGVudGlmaWVyKiBzZXNzaW9uSWRlbnRpZmllciwgVHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllcj4qIHNlZ21lbnRJ
ZGVudGlmaWVyLCBUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uU3RhdGUqIHNlc3Npb25TdGF0
ZSwgVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2VnbWVudFN0YXRlKiBzZWdtZW50U3RhdGUsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4mIHJlcGxheVBvc2l0aW9uKQor
dm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Y3VycmVudFJlcGxheVN0YXRlKEVycm9yU3RyaW5n
KiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciogc2Vzc2lv
bklkZW50aWZpZXIsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyPiogc2VnbWVudElkZW50aWZpZXIsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblN0YXRlKiBzZXNzaW9uU3RhdGUsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRlKiBzZWdtZW50U3RhdGUsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uPiYgcmVwbGF5
UG9zaXRpb24pCiB7CiAgICAgKnNlc3Npb25TdGF0ZSA9IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9y
U2Vzc2lvblN0YXRlKG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc2Vzc2lvblN0YXRlKCkpOwog
ICAgICpzZWdtZW50U3RhdGUgPSBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlZ21lbnRTdGF0ZSht
X3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnNlZ21lbnRTdGF0ZSgpKTsKQEAgLTQ5MiwxNCArNDky
LDE0IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmN1cnJlbnRSZXBsYXlTdGF0ZShFcnJv
clN0cmluZyosIFR5cGVCdWlsZGVyOjpSZXBsYXk6CiAgICAgcmVwbGF5UG9zaXRpb24gPSBidWls
ZEluc3BlY3Rvck9iamVjdEZvclBvc2l0aW9uKG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuY3Vy
cmVudFBvc2l0aW9uKCkpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpnZXRBdmFp
bGFibGVTZXNzaW9ucyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U2Vz
c2lvbklkZW50aWZpZXI+PiYgc2Vzc2lvbnNMaXN0KQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2Vu
dDo6Z2V0QXZhaWxhYmxlU2Vzc2lvbnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U2Vzc2lvbklkZW50aWZpZXI+PiYgc2Vzc2lvbnNMaXN0KQogewotICAg
IHNlc3Npb25zTGlzdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UmVwbGF5OjpT
ZXNzaW9uSWRlbnRpZmllcj46OmNyZWF0ZSgpOworICAgIHNlc3Npb25zTGlzdCA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklk
ZW50aWZpZXI+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Nlc3Npb25zTWFw
KQogICAgICAgICBzZXNzaW9uc0xpc3QtPmFkZEl0ZW0ocGFpci5rZXkpOwogfQogCi12b2lkIElu
c3BlY3RvclJlcGxheUFnZW50OjpnZXRTZXNzaW9uRGF0YShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiYgc2VyaWFsaXplZE9iamVj
dCkKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldFNlc3Npb25EYXRhKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBs
YXlTZXNzaW9uPiYgc2VyaWFsaXplZE9iamVjdCkKIHsKICAgICBSZWZQdHI8UmVwbGF5U2Vzc2lv
bj4gc2Vzc2lvbiA9IGZpbmRTZXNzaW9uKGVycm9yU3RyaW5nLCBpZGVudGlmaWVyKTsKICAgICBp
ZiAoIXNlc3Npb24pIHsKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFn
ZW50OjpnZXRTZXNzaW9uRGF0YShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFR5cGVCdWlsZGVy
OgogICAgIHNlcmlhbGl6ZWRPYmplY3QgPSBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlc3Npb24o
c2Vzc2lvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmdldFNlZ21lbnREYXRh
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgVHlwZUJ1aWxkZXI6OlJlcGxheTo6U2VnbWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSZXBsYXk6OlNlc3Npb25T
ZWdtZW50PiYgc2VyaWFsaXplZE9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6Omdl
dFNlZ21lbnREYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4mIHNlcmlhbGl6ZWRPYmplY3QpCiB7
CiAgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdtZW50ID0gZmluZFNlZ21lbnQo
ZXJyb3JTdHJpbmcsIGlkZW50aWZpZXIpOwogICAgIGlmICghc2VnbWVudCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAppbmRleCBmN2JjZTZm
NGNmYjA5YWY0ZDQyZGMxNmYyMTMzYjI1ZjU4Nzk0MWI0Li4wMmNjN2UwNzRlYmYwNzhkNjY2NTc0
NjNlZTNlZTg0ODU2MWI3ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVwbGF5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVwbGF5QWdlbnQuaApAQCAtMTAxLDEzICsxMDEsMTMgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxQbGF5YmFjayhFcnJvclN0cmluZyopIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB2b2lkIHN3aXRjaFNlc3Npb24oRXJyb3JTdHJpbmcqLCBTZXNzaW9uSWRlbnRpZmll
cikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydFNlc3Npb25TZWdtZW50KEVycm9y
U3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmll
ciwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciwgaW50
IHNlZ21lbnRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25T
ZWdtZW50KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNz
aW9uSWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGluc2VydFNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5
OjpTZWdtZW50SWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3VycmVudFJlcGxheVN0YXRlKEVycm9yU3RyaW5n
KiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciosIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
ZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyPiosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxh
eTo6U2Vzc2lvblN0YXRlKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50
U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxh
eTo6UmVwbGF5UG9zaXRpb24+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEF2YWls
YWJsZVNlc3Npb25zKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXI+
PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTZXNzaW9uRGF0YShFcnJvclN0cmlu
ZyosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSZXBsYXk6OlJlcGxheVNlc3Npb24+Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNlZ21lbnREYXRhKEVycm9yU3RyaW5nKiwgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciwgUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+Jikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGN1cnJlbnRSZXBsYXlTdGF0ZShFcnJvclN0cmluZyosIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIqLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRl
bnRpZmllcj4qLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TdGF0ZSosIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudFN0YXRlKiBzZWdtZW50U3RhdGUsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVBvc2l0aW9uPiYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRBdmFpbGFibGVTZXNzaW9ucyhFcnJvclN0cmluZyos
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpS
ZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyPj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0U2Vzc2lvbkRhdGEoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6
OlNlc3Npb25JZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpS
ZXBsYXlTZXNzaW9uPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRTZWdtZW50RGF0
YShFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50
aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TZWdtZW50
PiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4g
ZmluZFNlc3Npb24oRXJyb3JTdHJpbmcqLCBTZXNzaW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXgg
YjQ2OGYzNTU2OTk0ZjY2OWE2MDgzMmFhYTlmZTE5NWMwNWMwZDI0My4uOTA3ODFhMjczZGRkODEx
NjA0YzY3NDM2M2E0YWFjMGE1YTFjNzE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjAxLDkgKzIwMSw5IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JIZWFkZXJzKGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlCiAgICAgcmV0dXJuIGhlYWRlcnNPYmplY3Q7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc291cmNl
VGltaW5nPiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRp
bWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBidWlsZE9iamVjdEZvclRpbWlu
Zyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKIHsKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzb3Vy
Y2VUaW1pbmc6OmNyZWF0ZSgpCisgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OlJlc291cmNlVGltaW5nOjpjcmVhdGUoKQogICAgICAgICAuc2V0TmF2aWdhdGlvblN0YXJ0
KGxvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCgpKQogICAgICAgICAuc2V0RG9tYWlu
TG9va3VwU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KQogICAgICAgICAuc2V0RG9tYWlu
TG9va3VwRW5kKHRpbWluZy5kb21haW5Mb29rdXBFbmQpCkBAIC0yMTUsOSArMjE1LDkgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzb3VyY2VU
aW1pbmc+IGJ1aWxkT2JqZWN0Rm8KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQor
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVxdWVzdD4g
YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXF1
ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVx
dWVzdDo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJl
cXVlc3Q6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRVcmwocmVxdWVzdC51cmwoKS5zdHJpbmcoKSkK
ICAgICAgICAgLnNldE1ldGhvZChyZXF1ZXN0Lmh0dHBNZXRob2QoKSkKICAgICAgICAgLnNldEhl
YWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSk7
CkBAIC0yMjYsNyArMjI2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVxdWVzdD4gYnVpbGRPYmplY3RGb3JSZXNvdXIKICAgICByZXR1cm4g
cmVxdWVzdE9iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
K3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNl
PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4g
YnVpbGRPYmplY3RGb3JSZXNvdQogICAgIGRvdWJsZSBzdGF0dXMgPSByZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBidWlsZE9i
amVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKTsKIAotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzcG9uc2VPYmpl
Y3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6Y3JlYXRlKCkK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc3Bv
bnNlT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OmNyZWF0
ZSgpCiAgICAgICAgIC5zZXRVcmwocmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpCiAgICAgICAgIC5z
ZXRTdGF0dXMoc3RhdHVzKQogICAgICAgICAuc2V0U3RhdHVzVGV4dChyZXNwb25zZS5odHRwU3Rh
dHVzVGV4dCgpKQpAQCAtMjQ5LDE0ICsyNDksMTQgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3UK
ICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZv
ckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+
IHJlc291cmNlT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVk
UmVzb3VyY2U6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OkNhY2hlZFJlc291cmNlPiByZXNvdXJjZU9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0VXJsKGNhY2hl
ZFJlc291cmNlLT51cmwoKSkKICAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50Ojpj
YWNoZWRSZXNvdXJjZVR5cGVKc29uKCpjYWNoZWRSZXNvdXJjZSkpCiAgICAgICAgIC5zZXRCb2R5
U2l6ZShjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiAKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCks
IGxvYWRlcik7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3Bv
bnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNh
Y2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOwogICAgIGlmIChyZXNvdXJjZVJlc3Bv
bnNlKQogICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0UmVzcG9uc2UocmVzb3VyY2VSZXNwb25z
ZSk7CiAKQEAgLTMxNyw5ICszMTcsOSBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Ondp
bGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9s
LCAibm8tY2FjaGUiKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdl
OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZVR5cGVKc29uKHR5cGUpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNl
VHlwZSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24o
dHlwZSk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5p
dGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZy
YW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmpl
Y3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1l
KCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVx
dWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZy
YW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJp
bmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGN1cnJlbnRUaW1l
KCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGly
ZWN0UmVzcG9uc2UsIGxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJl
c291cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIpOwogfQogCkBAIC0zMzcsNyArMzM3LDcg
QEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5n
IHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVz
b3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwg
bG9hZGVyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9u
c2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVz
cG9uc2UsIGxvYWRlcik7CiAKICAgICBib29sIGlzTm90TW9kaWZpZWQgPSByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID09IDMwNDsKIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lCiAgICAgaWYgKGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAgIC8vIFVzZSBtaW1l
IHR5cGUgZnJvbSBjYWNoZWQgcmVzb3VyY2UgaW4gY2FzZSB0aGUgb25lIGluIHJlc3BvbnNlIGlz
IGVtcHR5LgogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZSAmJiByZXNwb25zZS5taW1lVHlw
ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZTo6TWltZVR5cGUsIGNhY2hl
ZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOworICAgICAgICAgICAgcmVzb3VyY2VS
ZXNwb25zZS0+c2V0U3RyaW5nKEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNl
OjpNaW1lVHlwZSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CiAgICAg
ICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElkLCBjYWNoZWRS
ZXNvdXJjZSk7CiAgICAgfQogCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIq
IGxvYWQKICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXVzZVhIUlJlcGxheURhdGEocmVxdWVz
dElkLCByYXdSZXF1ZXN0SWQpOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlh
dG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6
IG51bGxwdHIpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0
aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJh
bWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwogCiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElk
LCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUo
KSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNl
LCBsb2FkZXIpKTsKIH0KQEAgLTU1MSwxOSArNTUxLDE5IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgICAgICBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvciA9IGJ1aWxkSW5pdGlhdG9y
T2JqZWN0KGRvY3VtZW50KTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxkSW5pdGlh
dG9yT2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpidWlsZElu
aXRpYXRvck9iamVjdChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gc3RhY2tUcmFjZSA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01haW5UaHJlYWRF
eGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1Np
emVUb0NhcHR1cmUpOwogICAgIGlmIChzdGFja1RyYWNlICYmIHN0YWNrVHJhY2UtPnNpemUoKSA+
IDApIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6Oklu
aXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpUeXBlOjpTY3JpcHQpOworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JP
YmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgp
CisgICAgICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0
aWF0b3I6OlR5cGU6OlNjcmlwdCk7CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0U3RhY2tU
cmFjZShzdGFja1RyYWNlLT5idWlsZEluc3BlY3RvckFycmF5KCkpOwogICAgICAgICByZXR1cm4g
aW5pdGlhdG9yT2JqZWN0OwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+
c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAg
ICAgLnNldFR5cGUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yOjpU
eXBlOjpQYXJzZXIpOworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6OlBhcnNlcik7CiAgICAgICAgIGlu
aXRpYXRvck9iamVjdC0+c2V0VXJsKGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAg
IGluaXRpYXRvck9iamVjdC0+c2V0TGluZU51bWJlcihkb2N1bWVudC0+c2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpKTsKICAgICAg
ICAgcmV0dXJuIGluaXRpYXRvck9iamVjdDsKQEAgLTU3Miw4ICs1NzIsOCBAQCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6YgogICAgIGlmIChtX2lzUmVjYWxjdWxhdGluZ1N0eWxlICYmIG1fc3R5bGVS
ZWNhbGN1bGF0aW9uSW5pdGlhdG9yKQogICAgICAgICByZXR1cm4gbV9zdHlsZVJlY2FsY3VsYXRp
b25Jbml0aWF0b3I7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29y
azo6SW5pdGlhdG9yOjpjcmVhdGUoKQotICAgICAgICAuc2V0VHlwZShJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I6OlR5cGU6Ok90aGVyKQorICAgIHJldHVybiBJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I6OmNyZWF0ZSgpCisgICAgICAgIC5z
ZXRUeXBlKEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcjo6VHlwZTo6T3Ro
ZXIpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU4NiwxNCArNTg2LDE0IEBAIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2Vu
ZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0
PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6V2ViU29ja2V0
UmVxdWVzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFk
ZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSk7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPndlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6
OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgcmVxdWVzdE9iamVjdCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5l
dHdvcms6OldlYlNvY2tldFJlc3BvbnNlPiByZXNwb25zZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldFJlc3BvbnNlOjpjcmVhdGUoKQorICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXNwb25zZT4gcmVzcG9u
c2VPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXNwb25z
ZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFN0YXR1cyhyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
KQogICAgICAgICAuc2V0U3RhdHVzVGV4dChyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKQogICAg
ICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkcygpKSk7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZT4gZnJh
bWVPYmplY3QgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFt
ZTo6Y3JlYXRlKCkKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6V2Vi
U29ja2V0RnJhbWU+IGZyYW1lT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
V2ViU29ja2V0RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRPcGNvZGUoZnJhbWUub3BDb2Rl
KQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNrZWQpCiAgICAgICAgIC5zZXRQYXlsb2FkRGF0
YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkpOwpAQCAtNjE2LDcg
KzYxNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tl
dEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OldlYlNvY2tldEZyYW1lOjpjcmVhdGUoKQorICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZT4gZnJhbWVP
YmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRGcmFtZTo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUpCiAgICAgICAgIC5zZXRNYXNr
KGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5wYXls
b2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA0Yzg4YWMzZDg2ZjVkYjFjNTVhNTEx
MTQ3YjI3MzlmOGU0OGY0M2VkLi45Y2E0ODNkZjdlY2I1Y2E0NmFmNjIxOGFmMjA0NzlhMzJkZTli
ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNhbGN1
bGF0ZVN0eWxlKCk7CiAgICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1
bWVudCopOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50Kik7CisgICAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlh
dG9yT2JqZWN0KERvY3VtZW50Kik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgdm9p
ZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwm
IHJlcXVlc3RVUkwpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBSZWZQdHI8WEhSUmVwbGF5RGF0YT4+IFBl
bmRpbmdYSFJSZXBsYXlEYXRhTWFwOwogICAgIFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwIG1fcGVu
ZGluZ1hIUlJlcGxheURhdGE7CiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQg
c2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5bGVSZWNhbGN1
bGF0aW9uSW5pdGlhdG9yOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9p
c1JlY2FsY3VsYXRpbmdTdHlsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA4ZjJiODJiN2Y2YjRiZmEyOTA5NjM3MWFl
MmEwZGEwNjdlN2Y4OTQ0Li4xZmZkZDRjNTQyOWQzY2U4NjhiOTQ5NzU2ODQzYjg0NmQ3MzA2NGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KIAotdXNpbmcgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk7Cit1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTsK
IHVzaW5nIFdlYkNvcmU6OlJ1bGVTb3VyY2VEYXRhTGlzdDsKIHVzaW5nIFdlYkNvcmU6OkNTU1J1
bGVTb3VyY2VEYXRhOwogCkBAIC0xNDgsMTQgKzE0OCwxNCBAQCBlbnVtIE1lZGlhTGlzdFNvdXJj
ZSB7CiAgICAgTWVkaWFMaXN0U291cmNlSW1wb3J0UnVsZQogfTsKIAotc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gYnVpbGRTb3VyY2VS
YW5nZU9iamVjdChjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UsIFZlY3RvcjxzaXplX3Q+KiBsaW5l
RW5kaW5ncykKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U291
cmNlUmFuZ2U+IGJ1aWxkU291cmNlUmFuZ2VPYmplY3QoY29uc3QgU291cmNlUmFuZ2UmIHJhbmdl
LCBWZWN0b3I8c2l6ZV90PiogbGluZUVuZGluZ3MpCiB7CiAgICAgaWYgKCFsaW5lRW5kaW5ncykK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgVGV4dFBvc2l0aW9uIHN0YXJ0ID0gQ29udGVu
dFNlYXJjaFV0aWxpdGllczo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5zdGFydCwgKmxp
bmVFbmRpbmdzKTsKICAgICBUZXh0UG9zaXRpb24gZW5kID0gQ29udGVudFNlYXJjaFV0aWxpdGll
czo6dGV4dFBvc2l0aW9uRnJvbU9mZnNldChyYW5nZS5lbmQsICpsaW5lRW5kaW5ncyk7CiAKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZT4gcmVzdWx0
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTb3VyY2VSYW5nZTo6Y3JlYXRlKCkKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTb3VyY2VSYW5nZT4gcmVzdWx0ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTb3VyY2VSYW5nZTo6Y3JlYXRlKCkKICAgICAgICAg
LnNldFN0YXJ0TGluZShzdGFydC5tX2xpbmUuemVyb0Jhc2VkSW50KCkpCiAgICAgICAgIC5zZXRT
dGFydENvbHVtbihzdGFydC5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKSkKICAgICAgICAgLnNldEVu
ZExpbmUoZW5kLm1fbGluZS56ZXJvQmFzZWRJbnQoKSkKQEAgLTE2MywyNiArMTYzLDI2IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U291cmNlUmFuZ2U+
IGJ1aWxkU291cmNlUmFuZ2VPYmplCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+
IGJ1aWxkTWVkaWFPYmplY3QoY29uc3QgTWVkaWFMaXN0KiBtZWRpYSwgTWVkaWFMaXN0U291cmNl
IG1lZGlhTGlzdFNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhPiBidWlsZE1lZGlhT2JqZWN0
KGNvbnN0IE1lZGlhTGlzdCogbWVkaWEsIE1lZGlhTGlzdFNvdXJjZSBtZWRpYUxpc3RTb3VyY2Us
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIC8vIE1ha2UgY2VydGFpbiBjb21waWxl
cnMgaGFwcHkgYnkgaW5pdGlhbGl6aW5nIHxzb3VyY2V8IHVwLWZyb250LgotICAgIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZSBzb3VyY2UgPSBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OworICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE6OlNvdXJjZSBzb3VyY2UgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OklubGluZVNoZWV0OwogICAgIHN3
aXRjaCAobWVkaWFMaXN0U291cmNlKSB7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VNZWRpYVJ1
bGU6Ci0gICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVk
aWE6OlNvdXJjZTo6TWVkaWFSdWxlOworICAgICAgICBzb3VyY2UgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6Ok1lZGlhUnVsZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VJbXBvcnRSdWxlOgotICAgICAgICBzb3VyY2UgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhOjpTb3VyY2U6OkltcG9ydFJ1bGU7Cisg
ICAgICAgIHNvdXJjZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTTWVkaWE6OlNvdXJj
ZTo6SW1wb3J0UnVsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VM
aW5rZWRTaGVldDoKLSAgICAgICAgc291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NNZWRpYTo6U291cmNlOjpMaW5rZWRTaGVldDsKKyAgICAgICAgc291cmNlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpMaW5rZWRTaGVldDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUxpc3RTb3VyY2VJbmxpbmVTaGVldDoKLSAgICAgICAg
c291cmNlID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6U291cmNlOjpJ
bmxpbmVTaGVldDsKKyAgICAgICAgc291cmNlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NNZWRpYTo6U291cmNlOjpJbmxpbmVTaGVldDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTTWVkaWE+IG1lZGlhT2Jq
ZWN0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYTo6Y3JlYXRlKCkKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NNZWRpYT4gbWVkaWFPYmplY3Qg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU01lZGlhOjpjcmVhdGUoKQogICAgICAgICAu
c2V0VGV4dChtZWRpYS0+bWVkaWFUZXh0KCkpCiAgICAgICAgIC5zZXRTb3VyY2Uoc291cmNlKTsK
IApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBhc0NT
U1J1bGVMaXN0KENTU1J1bGUqIHJ1bGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRp
YyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPiogbWVkaWFBcnJheSkKK3N0YXRpYyB2b2lkIGZp
bGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU01lZGlhPiogbWVkaWFBcnJheSkKIHsKICAgICBNZWRpYUxpc3QqIG1lZGlhTGlz
dDsKICAgICBDU1NSdWxlKiBwYXJlbnRSdWxlID0gcnVsZTsKQEAgLTMwNiwxMSArMzA2LDExIEBA
IEluc3BlY3RvclN0eWxlOjp+SW5zcGVjdG9yU3R5bGUoKQogewogfQogCi1QYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpidWls
ZE9iamVjdEZvclN0eWxlKCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKSBjb25z
dAogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBy
ZXN1bHQgPSBzdHlsZVdpdGhQcm9wZXJ0aWVzKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTU3R5bGU+IHJlc3VsdCA9IHN0eWxlV2l0aFByb3BlcnRpZXMoKTsKICAg
ICBpZiAoIW1fc3R5bGVJZC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+c2V0U3R5bGVJZCht
X3N0eWxlSWQuYXNQcm90b2NvbFZhbHVlPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGVJZD4oKSk7CisgICAgICAgIHJlc3VsdC0+c2V0U3R5bGVJZChtX3N0eWxlSWQuYXNQcm90
b2NvbFZhbHVlPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVJZD4oKSk7CiAKICAg
ICByZXN1bHQtPnNldFdpZHRoKG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoIndpZHRoIikpOwog
ICAgIHJlc3VsdC0+c2V0SGVpZ2h0KG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUoImhlaWdodCIp
KTsKQEAgLTMyMiwxNSArMzIyLDE1IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9yCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxl
UHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBj
b25zdAorUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IEluc3BlY3RvclN0eWxlOjpi
dWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+
OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiByZXN1bHQgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0Nv
bXB1dGVkU3R5bGVQcm9wZXJ0eT46OmNyZWF0ZSgpOwogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHls
ZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJvcGVy
dGllcyk7CiAKICAgICBmb3IgKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5Pjo6aXRlcmF0
b3IgaXQgPSBwcm9wZXJ0aWVzLmJlZ2luKCksIGl0RW5kID0gcHJvcGVydGllcy5lbmQoKTsgaXQg
IT0gaXRFbmQ7ICsraXQpIHsKICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBw
cm9wZXJ0eUVudHJ5ID0gaXQtPnNvdXJjZURhdGE7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4gZW50cnkgPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eTo6Y3JlYXRl
KCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRT
dHlsZVByb3BlcnR5PiBlbnRyeSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0
ZWRTdHlsZVByb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldE5hbWUocHJvcGVydHlF
bnRyeS5uYW1lKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnkudmFsdWUpOwog
ICAgICAgICByZXN1bHQtPmFkZEl0ZW0oZW50cnkpOwpAQCAtNTA5LDE0ICs1MDksMTQgQEAgYm9v
bCBJbnNwZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JT
dHlsZVByb3BlcnR5PiogcmVzdWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5
bGVXaXRoUHJvcGVydGllcygpIGNvbnN0CitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY29u
c3QKIHsKICAgICBWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4gcHJvcGVydGllczsKICAg
ICBwb3B1bGF0ZUFsbFByb3BlcnRpZXMoJnByb3BlcnRpZXMpOwogCi0gICAgUmVmUHRyPEFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0aWVzT2Jq
ZWN0ID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNo
b3J0aGFuZEVudHJ5Pj4gc2hvcnRoYW5kRW50cmllcyA9IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+OjpjcmVhdGUoKTsKLSAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9w
ZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CisgICAgUmVmUHRyPEFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0aWVzT2JqZWN0ID0gQXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpOworICAg
IFJlZlB0cjxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlNob3J0aGFuZEVudHJ5Pj4g
c2hvcnRoYW5kRW50cmllcyA9IEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2hvcnRo
YW5kRW50cnk+OjpjcmVhdGUoKTsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+PiBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0
aXZlUHJvcGVydHk7CiAgICAgSGFzaFNldDxTdHJpbmc+IGZvdW5kU2hvcnRoYW5kczsKICAgICBT
dHJpbmcgcHJldmlvdXNQcmlvcml0eTsKICAgICBTdHJpbmcgcHJldmlvdXNTdGF0dXM7CkBAIC01
MzAsMTMgKzUzMCwxMyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZQogCiAgICAgICAgIC8vIFZp
c3VhbCBTdHVkaW8gZGlzYWdyZWVzIHdpdGggb3RoZXIgY29tcGlsZXJzIGFzIHRvIHdoZXRoZXIg
J2NsYXNzJyBpcyBuZWVkZWQgaGVyZS4KICNpZiBDT01QSUxFUihNU1ZDKQotICAgICAgICBlbnVt
IGNsYXNzIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMgc3Rh
dHVzOworICAgICAgICBlbnVtIGNsYXNzIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJv
cGVydHlTdGF0dXMgc3RhdHVzOwogI2Vsc2UKLSAgICAgICAgZW51bSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzIHN0YXR1czsKKyAgICAgICAgZW51bSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzIHN0YXR1czsKICNlbmRpZgot
ICAgICAgICBzdGF0dXMgPSBpdC0+ZGlzYWJsZWQgPyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpEaXNhYmxlZCA6IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkFjdGl2ZTsKKyAgICAgICAgc3RhdHVzID0gaXQtPmRp
c2FibGVkID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6RGlz
YWJsZWQgOiBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpBY3Rp
dmU7CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJv
cGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eTo6Y3JlYXRlKCkKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UHJvcGVydHk+IHByb3BlcnR5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0
eTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXROYW1lKG5hbWUubG93ZXIoKSkKICAgICAgICAg
ICAgIC5zZXRWYWx1ZShwcm9wZXJ0eUVudHJ5LnZhbHVlKTsKIApAQCAtNTY5LDIyICs1NjksMjIg
QEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNw
ZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGUKICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SWQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOwogICAgICAgICAgICAgICAgIC8vIENh
bm9uaWNhbGl6ZSBwcm9wZXJ0eSBuYW1lcyB0byB0cmVhdCBub24tcHJlZml4ZWQgYW5kIHZlbmRv
ci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyB0aGUgc2FtZSAob3BhY2l0eSB2cy4gLXdlYmtpdC1v
cGFjaXR5KS4KICAgICAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsUHJvcGVydHlOYW1lID0g
cHJvcGVydHlJZCA/IGdldFByb3BlcnR5TmFtZVN0cmluZyhwcm9wZXJ0eUlkKSA6IG5hbWU7Ci0g
ICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pj46Oml0ZXJhdG9yIGFjdGl2ZUl0ID0gcHJvcGVydHlOYW1l
VG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LmZpbmQoY2Fub25pY2FsUHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRlcmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOwogICAgICAg
ICAgICAgICAgIGlmIChhY3RpdmVJdCAhPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJv
cGVydHkuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5RW50cnkucGFy
c2VkT2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1ByaW9yaXR5ID0g
YWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NQcm9wZXJ0eTo6UHJpb3JpdHksICZwcmV2aW91c1ByaW9yaXR5KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgc3VjY2Vzc1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5n
KEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1cywgJnByZXZp
b3VzU3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc1ByaW9yaXR5
ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eTo6UHJpb3JpdHksICZwcmV2aW91c1ByaW9yaXR5KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgc3VjY2Vzc1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5n
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1cywgJnByZXZpb3Vz
U3RhdHVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzU3RhdHVzICYmIHBy
ZXZpb3VzU3RhdHVzICE9ICJpbmFjdGl2ZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydHlFbnRyeS5pbXBvcnRhbnQgfHwgIXN1Y2Nlc3NQcmlvcml0eSkgLy8gUHJp
b3JpdHkgbm90IHNldCA9PSAibm90IGltcG9ydGFudCIuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHN0YXR1cyA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5U3RhdHVzOjpBY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChzdGF0dXMgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0
YXR1czo6QWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluYWN0
aXZhdGUgYSBub24taW1wb3J0YW50IHByb3BlcnR5IGZvbGxvd2luZyB0aGUgc2FtZS1uYW1lZCBp
bXBvcnRhbnQgcHJvcGVydHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1
cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0
aXZlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzOjpJbmFjdGl2ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZXZpb3Vz
UGFyc2VkT2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJ
dC0+dmFsdWUtPmdldEJvb2xlYW4oSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eTo6UGFyc2VkT2ssICZwcmV2aW91c1BhcnNlZE9rKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpQYXJzZWRPaywgJnByZXZpb3VzUGFyc2VkT2sp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgIXByZXZpb3VzUGFyc2Vk
T2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTU5Miw3ICs1OTIsNyBAQCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHls
ZVdpdGhQcm9wZQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0
aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
YWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpOworICAgICAgICAgICAgICAgICAgICBhY3RpdmVJ
dC0+dmFsdWUtPnNldFN0YXR1cyhJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5
U3RhdHVzOjpJbmFjdGl2ZSk7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVRvUHJl
dmlvdXNBY3RpdmVQcm9wZXJ0eS5zZXQoY2Fub25pY2FsUHJvcGVydHlOYW1lLCBwcm9wZXJ0eSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTYwMCwxMyArNjAw
LDEzIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4g
SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlCiAgICAgICAgICAgICAgICAgLy8gRGVmYXVs
dCAiaW1wbGljaXQiID09IGZhbHNlLgogICAgICAgICAgICAgICAgIGlmIChpbXBsaWNpdCkKICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHktPnNldEltcGxpY2l0KHRydWUpOwotICAgICAgICAg
ICAgICAgIHN0YXR1cyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlT
dGF0dXM6OlN0eWxlOworICAgICAgICAgICAgICAgIHN0YXR1cyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OlN0eWxlOwogCiAgICAgICAgICAgICAgICAgU3Ry
aW5nIHNob3J0aGFuZCA9IG1fc3R5bGUtPmdldFByb3BlcnR5U2hvcnRoYW5kKG5hbWUpOwogICAg
ICAgICAgICAgICAgIGlmICghc2hvcnRoYW5kLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoIWZvdW5kU2hvcnRoYW5kcy5jb250YWlucyhzaG9ydGhhbmQpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3VuZFNob3J0aGFuZHMuYWRkKHNob3J0aGFuZCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTaG9y
dGhhbmRFbnRyeT4gZW50cnkgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFu
ZEVudHJ5OjpjcmVhdGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50cnk+IGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpTaG9ydGhhbmRFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuc2V0TmFtZShzaG9ydGhhbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LnNldFZhbHVlKHNob3J0aGFuZFZhbHVlKHNob3J0aGFuZCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvcnRoYW5kRW50cmllcy0+YWRkSXRlbShlbnRyeSk7CkBAIC02MTYsMTEgKzYxNiwx
MSBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZQogICAgICAgICB9CiAKICAgICAgICAgLy8gRGVm
YXVsdCAic3RhdHVzIiA9PSAic3R5bGUiLgotICAgICAgICBpZiAoc3RhdHVzICE9IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OlN0eWxlKQorICAgICAgICBp
ZiAoc3RhdHVzICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6
OlN0eWxlKQogICAgICAgICAgICAgcHJvcGVydHktPnNldFN0YXR1cyhzdGF0dXMpOwogICAgIH0K
IAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1
bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQorICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlOjpjcmVhdGUoKQogICAgICAgICAuc2V0Q3Nz
UHJvcGVydGllcyhwcm9wZXJ0aWVzT2JqZWN0KQogICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmll
cyhzaG9ydGhhbmRFbnRyaWVzKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKQEAgLTc1
NSw3ICs3NTUsNyBAQCBOZXdMaW5lQW5kV2hpdGVzcGFjZSYgSW5zcGVjdG9yU3R5bGU6Om5ld0xp
bmVBbmRXaGl0ZXNwYWNlRGVsaW1pdGVycygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZm9ybWF0Owog
fQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwg
UGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1
bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNo
ZWV0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0
eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwg
cGFnZVN0eWxlU2hlZXQsIG9yaWdpbiwgZG9jdW1lbnRVUkwsIGxpc3RlbmVyKSk7CiB9CkBAIC03
NjgsNyArNzY4LDcgQEAgU3RyaW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlU2hlZXRVUkwo
Q1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiB9CiAKLUluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5
bGVTaGVldE9yaWdpbiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVy
KiBsaXN0ZW5lcikKK0luc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3Rl
bmVyKiBsaXN0ZW5lcikKICAgICA6IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1faWQo
aWQpCiAgICAgLCBtX3BhZ2VTdHlsZVNoZWV0KHBhZ2VTdHlsZVNoZWV0KQpAQCAtOTU5LDcgKzk1
OSw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZUZvcklkKGNvbnN0
IEluc3BlY3RvckNTU0lkJiBpZCkgY29uc3QKIAogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpCitQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2Jq
ZWN0Rm9yU3R5bGVTaGVldCgpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBh
Z2VTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQpAQCAtOTY3LDcgKzk2Nyw3IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9k
eT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6CiAKICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IGNzc1J1
bGVMaXN0ID0gYXNDU1NSdWxlTGlzdChzdHlsZVNoZWV0KTsKIAotICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiByZXN1bHQgPSBJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5OjpjcmVhdGUoKQorICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5PiByZXN1bHQg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRCb2R5OjpjcmVhdGUoKQog
ICAgICAgICAuc2V0U3R5bGVTaGVldElkKGlkKCkpCiAgICAgICAgIC5zZXRSdWxlcyhidWlsZEFy
cmF5Rm9yUnVsZUxpc3QoY3NzUnVsZUxpc3QuZ2V0KCkpKTsKIApAQCAtOTc5LDcgKzk3OSw3IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9k
eT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0
SGVhZGVyPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZv
KCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVh
ZGVyPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKCkK
IHsKICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0eWxlU2hlZXQoKTsKICAg
ICBpZiAoIXN0eWxlU2hlZXQpCkBAIC05ODcsNyArOTg3LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IEluc3BlY3RvclN0eWxl
U2hlZXQKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0eWxlU2hlZXQtPm93bmVyRG9jdW1l
bnQoKTsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDog
bnVsbHB0cjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0SGVhZGVyPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlU2hlZXRIZWFkZXI6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyOjpjcmVhdGUoKQogICAgICAgICAuc2V0U3R5bGVTaGVl
dElkKGlkKCkpCiAgICAgICAgIC5zZXRPcmlnaW4obV9vcmlnaW4pCiAgICAgICAgIC5zZXREaXNh
YmxlZChzdHlsZVNoZWV0LT5kaXNhYmxlZCgpKQpAQCAtOTk4LDEwICs5OTgsMTAgQEAgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+IElu
c3BlY3RvclN0eWxlU2hlZXQKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gc2Vs
ZWN0b3JzRnJvbVNvdXJjZShjb25zdCBDU1NSdWxlU291cmNlRGF0YSogc291cmNlRGF0YSwgY29u
c3QgU3RyaW5nJiBzaGVldFRleHQpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3Vy
Y2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCkKIHsKICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiwg
Y29tbWVudCwgKCIvXFwqW15dKj9cXCovIiwgVGV4dENhc2VTZW5zaXRpdmUsIEpTQzo6WWFycjo6
TXVsdGlsaW5lRW5hYmxlZCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+PiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRl
KCk7CiAgICAgY29uc3QgU2VsZWN0b3JSYW5nZUxpc3QmIHJhbmdlcyA9IHNvdXJjZURhdGEtPnNl
bGVjdG9yUmFuZ2VzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcmFuZ2VzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UgPSBy
YW5nZXMuYXQoaSk7CkBAIC0xMDE0LDEyICsxMDE0LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHNlbGVjdG9yc0Zyb21Tb3VyY2Uo
Y29uCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSogcnVsZSkKK1Bhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IEluc3BlY3RvclN0eWxl
U2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSogcnVsZSkKIHsK
ICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURhdGE7CiAgICAgaWYgKGVuc3Vy
ZVBhcnNlZERhdGFSZWFkeSgpKQogICAgICAgICBzb3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGFG
b3IocnVsZS0+c3R5bGUoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz4+IHNlbGVjdG9yczsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4gc2VsZWN0b3JzOwogCiAgICAgLy8gVGhpcyBpbnRlbnRpb25hbGx5IGRv
ZXMgbm90IHJlbHkgb24gdGhlIHNvdXJjZSBkYXRhIHRvIGF2b2lkIGNhdGNoaW5nIHRoZSB0cmFp
bGluZyBjb21tZW50cyAoYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiBzdGFydGluZyAneycpLgogICAg
IFN0cmluZyBzZWxlY3RvclRleHQgPSBydWxlLT5zZWxlY3RvclRleHQoKTsKQEAgLTEwMjcsMTIg
KzEwMjcsMTIgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVj
dG9yTGlzdD4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGQKICAgICBpZiAoc291cmNlRGF0YSkK
ICAgICAgICAgc2VsZWN0b3JzID0gc2VsZWN0b3JzRnJvbVNvdXJjZShzb3VyY2VEYXRhLmdldCgp
LCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlbGVj
dG9ycyA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwor
ICAgICAgICBzZWxlY3RvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Ojpj
cmVhdGUoKTsKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QgPSBy
dWxlLT5zdHlsZVJ1bGUoKS0+c2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIGZvciAoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxl
Y3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCiAgICAgICAgICAgICBzZWxl
Y3RvcnMtPmFkZEl0ZW0oc2VsZWN0b3ItPnNlbGVjdG9yVGV4dCgpKTsKICAgICB9Ci0gICAgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiByZXN1bHQgPSBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yTGlzdDo6Y3JlYXRlKCkKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTZWxlY3Rvckxpc3Q+IHJlc3VsdCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2VsZWN0b3JMaXN0OjpjcmVhdGUoKQogICAgICAgICAu
c2V0U2VsZWN0b3JzKHNlbGVjdG9ycykKICAgICAgICAgLnNldFRleHQoc2VsZWN0b3JUZXh0KQog
ICAgICAgICAucmVsZWFzZSgpOwpAQCAtMTA0MSwyOSArMTA0MSwyOSBAQCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSogcnVsZSkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlKQogewogICAgIENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQgPSBwYWdlU3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiByZXN1bHQgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU6OmNyZWF0ZSgpCisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UnVsZT4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlOjpjcmVhdGUo
KQogICAgICAgICAuc2V0U2VsZWN0b3JMaXN0KGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KHJ1
bGUpKQogICAgICAgICAuc2V0U291cmNlTGluZShydWxlLT5zdHlsZVJ1bGUoKS0+c291cmNlTGlu
ZSgpKQogICAgICAgICAuc2V0T3JpZ2luKG1fb3JpZ2luKQogICAgICAgICAuc2V0U3R5bGUoYnVp
bGRPYmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgpKSk7CiAKICAgICAvLyAic291cmNlVVJMIiBp
cyBwcmVzZW50IG9ubHkgZm9yIHJlZ3VsYXIgcnVsZXMsIG90aGVyd2lzZSAib3JpZ2luIiBzaG91
bGQgYmUgdXNlZCBpbiB0aGUgZnJvbnRlbmQuCi0gICAgaWYgKG1fb3JpZ2luID09IEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhcikKKyAgICBpZiAo
bV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpS
ZWd1bGFyKQogICAgICAgICByZXN1bHQtPnNldFNvdXJjZVVSTChmaW5hbFVSTCgpKTsKIAogICAg
IGlmIChjYW5CaW5kKCkpIHsKICAgICAgICAgSW5zcGVjdG9yQ1NTSWQgaWQocnVsZUlkKHJ1bGUp
KTsKICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFJ1
bGVJZChpZC5hc1Byb3RvY29sVmFsdWU8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlSWQ+KCkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRSdWxlSWQoaWQuYXNQcm90b2NvbFZh
bHVlPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZUlkPigpKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4+IG1l
ZGlhQXJyYXkgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPjo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
TWVkaWE+PiBtZWRpYUFycmF5ID0gQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NN
ZWRpYT46OmNyZWF0ZSgpOwogCiAgICAgZmlsbE1lZGlhTGlzdENoYWluKHJ1bGUsIG1lZGlhQXJy
YXkuZ2V0KCkpOwogICAgIGlmIChtZWRpYUFycmF5LT5sZW5ndGgoKSkKQEAgLTEwNzIsNyArMTA3
Miw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJj
ZURhdGE7CiAgICAgaWYgKGVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQpAQCAtMTA4MCwxMyArMTA4
MCwxMyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZQogCiAgICAgSW5zcGVjdG9yQ1NTSWQgaWQg
PSBydWxlT3JTdHlsZUlkKHN0eWxlKTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBib2d1c1N0eWxl
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZTo6Y3JlYXRlKCkKLSAgICAg
ICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkKLSAgICAgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRy
aWVzKEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U2hvcnRoYW5kRW50cnk+Ojpj
cmVhdGUoKSk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlPiBib2d1c1N0eWxlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZTo6Y3Jl
YXRlKCkKKyAgICAgICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKEFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+OjpjcmVhdGUoKSkKKyAgICAgICAgICAgIC5zZXRTaG9y
dGhhbmRFbnRyaWVzKEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U2hvcnRoYW5kRW50
cnk+OjpjcmVhdGUoKSk7CiAgICAgICAgIHJldHVybiBib2d1c1N0eWxlLnJlbGVhc2UoKTsKICAg
ICB9CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IGluc3BlY3Rv
clN0eWxlRm9ySWQoaWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlPiByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgp
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQg
PSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogCiAgICAgLy8gU3R5bGUg
dGV4dCBjYW5ub3QgYmUgcmV0cmlldmVkIHdpdGhvdXQgc3R5bGVzaGVldCwgc28gc2V0IGNzc1Rl
eHQgaGVyZS4KICAgICBpZiAoc291cmNlRGF0YSkgewpAQCAtMTM3MCw3ICsxMzcwLDcgQEAgYm9v
bCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpvcmlnaW5hbFN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVz
dWx0KSBjb25zdAogCiBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlc291cmNlU3R5bGVTaGVl
dFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgaWYgKG1fb3JpZ2luID09IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlciB8fCBtX29yaWdp
biA9PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlVzZXJB
Z2VudCkKKyAgICBpZiAobV9vcmlnaW4gPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHls
ZVNoZWV0T3JpZ2luOjpVc2VyIHx8IG1fb3JpZ2luID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFnZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIW1fcGFnZVN0eWxlU2hlZXQgfHwgIW93bmVyRG9jdW1lbnQoKSB8fCAhb3duZXJE
b2N1bWVudCgpLT5mcmFtZSgpKQpAQCAtMTM5OCw5ICsxMzk4LDkgQEAgYm9vbCBJbnNwZWN0b3JT
dHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQorUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1J1bGU+PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3Qo
Q1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiByZXN1bHQg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
U1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0ID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPjo6
Y3JlYXRlKCk7CiAgICAgaWYgKCFydWxlTGlzdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlKCk7CiAKQEAgLTE0MzIsMTIgKzE0MzIsMTIgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0
Ojpjb2xsZWN0RmxhdFJ1bGVzKFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVMaXN0LCBDU1MK
ICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
PiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBl
bGVtZW50LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3Jp
Z2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUo
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0
T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKHBhZ2VBZ2VudCwgaWQsIGVs
ZW1lbnQsIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0KIAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9y
aWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQorSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVu
dCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlz
dGVuZXIqIGxpc3RlbmVyKQogICAgIDogSW5zcGVjdG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlk
LCBudWxscHRyLCBvcmlnaW4sICIiLCBsaXN0ZW5lcikKICAgICAsIG1fZWxlbWVudChlbGVtZW50
KQogICAgICwgbV9ydWxlU291cmNlRGF0YShudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggMGNhNWE1M2FlZTVjMzgzM2ZmOTg1
YjliMTM1Nzk0MzA5ODcyMDU2ZS4uNDE4M2I5NDFmYTAwNDZmMGM1YjBkMjcyN2ZlYTk2ZGE0M2Yx
Y2Y4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdHlsZVRleHRF
ZGl0b3IuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJQcm90b2NvbFR5cGVzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgc3R5
bGVTaGVldElkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVNoZWV0SWQ7IH0KICAgICB1bnNpZ25l
ZCBvcmRpbmFsKCkgY29uc3QgeyByZXR1cm4gbV9vcmRpbmFsOyB9CiAKLSAgICAvLyBJRCB0eXBl
IGlzIGVpdGhlciBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQgb3IgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlSWQuCisgICAgLy8gSUQgdHlwZSBpcyBl
aXRoZXIgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZUlkIG9yIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZUlkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgogICAg
IFBhc3NSZWZQdHI8SUQ+IGFzUHJvdG9jb2xWYWx1ZSgpIGNvbnN0CiAgICAgewpAQCAtMTM5LDgg
KzEzOSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdHlsZSgpOwogCiAgICAg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogY3NzU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdl
dCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU0Nv
bXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWls
ZE9iamVjdEZvclN0eWxlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9w
ZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNE
aXNhYmxlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9kaXNhYmxlZFByb3BlcnRpZXMu
aXNFbXB0eSgpOyB9CiAgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQodW5zaWduZWQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIGJvb2wgdG9nZ2xlUHJvcGVydHkodW5zaWduZWQgaW5kZXgsIGJvb2wg
ZGlzYWJsZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBhcHBseVN0eWxlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7IHJldHVybiBzZXRUZXh0KHRleHQsIGVjKTsgfQogCiAgICAgYm9vbCBwb3B1bGF0
ZUFsbFByb3BlcnRpZXMoVmVjdG9yPEluc3BlY3RvclN0eWxlUHJvcGVydHk+KiByZXN1bHQpIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGV4dHJhY3RTb3VyY2VEYXRhKCkgY29u
c3Q7CiAgICAgU3RyaW5nIHNob3J0aGFuZFZhbHVlKGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJv
cGVydHkpIGNvbnN0OwogICAgIFN0cmluZyBzaG9ydGhhbmRQcmlvcml0eShjb25zdCBTdHJpbmcm
IHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRy
PEluc3BlY3RvclN0eWxlPj4gSW5zcGVjdG9yU3R5bGVNYXA7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0
IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JTdHlsZVNoZWV0PiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBp
ZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRvY3VtZW50VVJM
LCBMaXN0ZW5lciopOwogICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVTaGVldFVSTChDU1NTdHlsZVNo
ZWV0KiBwYWdlU3R5bGVTaGVldCk7CiAKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdHlsZVNoZWV0
KCk7CkBAIC0xOTYsMTAgKzE5NiwxMCBAQCBwdWJsaWM6CiAgICAgQ1NTU3R5bGVSdWxlKiBhZGRS
dWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGRl
bGV0ZVJ1bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgQ1NT
U3R5bGVSdWxlKiBydWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+
IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgpOwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBidWlsZE9iamVjdEZvclN0eWxl
U2hlZXRJbmZvKCk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9y
U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4gYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0
KCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hl
ZXRIZWFkZXI+IGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKTsKKyAgICBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENT
U1N0eWxlUnVsZSopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKik7CiAgICAg
Ym9vbCBzZXRTdHlsZVRleHQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCBjb25zdCBTdHJpbmcmIHRl
eHQsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgc2V0UHJvcGVy
dHlUZXh0KGNvbnN0IEluc3BlY3RvckNTU0lkJiwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgU3RyaW5nKiBvbGRQcm9wZXJ0eVRleHQs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHRvZ2dsZVByb3BlcnR5KGNvbnN0IEluc3BlY3Rv
ckNTU0lkJiwgdW5zaWduZWQgcHJvcGVydHlJbmRleCwgYm9vbCBkaXNhYmxlLCBFeGNlcHRpb25D
b2RlJik7CkBAIC0yMTIsOSArMjEyLDkgQEAgcHVibGljOgogICAgIEluc3BlY3RvckNTU0lkIHN0
eWxlSWQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IHsgcmV0dXJuIHJ1bGVPclN0
eWxlSWQoc3R5bGUpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KElu
c3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBJ
bnNwZWN0b3JTdHlsZVNoZWV0KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQs
IFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwg
TGlzdGVuZXIqKTsKIAotICAgIGJvb2wgY2FuQmluZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2lu
ICE9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFn
ZW50ICYmIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbjo6VXNlcjsgfQorICAgIGJvb2wgY2FuQmluZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6VXNlckFn
ZW50ICYmIG1fb3JpZ2luICE9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6VXNlcjsgfQogICAgIEluc3BlY3RvckNTU0lkIHJ1bGVPclN0eWxlSWQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0OwogICAgIHZpcnR1YWwgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVs
ZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0OwpAQCAtMjQy
LDEzICsyNDIsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG9yaWdpbmFsU3R5bGVTaGVldFRleHQo
U3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgcmVzb3VyY2VTdHlsZVNoZWV0VGV4dChT
dHJpbmcqIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCBpbmxpbmVTdHlsZVNoZWV0VGV4dChTdHJp
bmcqIHJlc3VsdCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+PiBidWlsZEFycmF5
Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBidWlsZE9iamVjdEZvclNlbGVjdG9yTGlzdChD
U1NTdHlsZVJ1bGUqKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlz
dChDU1NSdWxlTGlzdCopOworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTZWxlY3Rvckxpc3Q+IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSop
OwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBTdHJpbmcgbV9p
ZDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlU3R5bGVTaGVldDsKLSAgICBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gbV9vcmlnaW47CisgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG1fb3JpZ2luOwogICAg
IFN0cmluZyBtX2RvY3VtZW50VVJMOwogICAgIGJvb2wgbV9pc1JldmFsaWRhdGluZzsKICAgICBQ
YXJzZWRTdHlsZVNoZWV0KiBtX3BhcnNlZFN0eWxlU2hlZXQ7CkBAIC0yNTksMTQgKzI1OSwxNCBA
QCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgOiBw
dWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFn
ZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gY3JlYXRl
KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVu
dD4sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIq
KTsKIAogICAgIHZvaWQgZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwg
Ym9vbCBnZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlk
KSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1
cm4gaW5saW5lU3R5bGUoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVl
dEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBh
c3NSZWZQdHI8RWxlbWVudD4sIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVl
dE9yaWdpbiwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVt
ZW50PiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5l
ciopOwogCiAgICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0
YUZvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3Qgb3ZlcnJpZGUgeyBBU1NFUlRf
VU5VU0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsgcmV0dXJuIG1fcnVsZVNvdXJj
ZURhdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAppbmRleCBhY2U1NjNmZTYyOTEzZmNhZWUwMjNiYzc1MmVkMTFmOTc2MmQy
NTE0Li5iYzQ5NmQwMzFhYTEyNzdjNDE3ZTczMWYxNzA1ZGJiODBlZWNjZjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBA
IC01NTQsOTkgKzU1NCw5OSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9p
bnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSQogICAgIGFwcGVuZFJl
Y29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb24s
IGhpdENvdW50KSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQcm9iZVNhbXBsZSwgZmFsc2UsIGZyYW1l
RnJvbUV4ZWNTdGF0ZShleGVjKSk7CiB9CiAKLXN0YXRpYyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUp
CitzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3Rv
Y29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpFdmVudERpc3BhdGNoOgotICAgICAgICByZXR1cm4g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZlbnREaXNwYXRj
aDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5
cGU6OkV2ZW50RGlzcGF0Y2g7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb247CisgICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpTY2hl
ZHVsZVN0eWxlUmVjYWxjdWxhdGlvbjsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVj
YWxjdWxhdGVTdHlsZXM6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpSZWNhbGN1bGF0ZVN0eWxlczsKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlY2FsY3VsYXRlU3R5bGVz
OwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpJbnZhbGlkYXRlTGF5b3V0OgotICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6SW52
YWxpZGF0ZUxheW91dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OkludmFsaWRhdGVMYXlvdXQ7CiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OkxheW91dDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRp
bWVsaW5lOjpFdmVudFR5cGU6OkxheW91dDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkxheW91dDsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UGFpbnQ6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpQYWludDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlBhaW50OwogICAgIGNhc2UgVGltZWxpbmVSZWNv
cmRUeXBlOjpTY3JvbGxMYXllcjoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjcm9sbExheWVyOworICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6U2Nyb2xsTGF5ZXI7CiAgICAg
Y2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc2l6ZUltYWdlOgotICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzaXplSW1hZ2U7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpS
ZXNpemVJbWFnZTsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpQYXJzZUhUTUw6Ci0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpQYXJzZUhUTUw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpQYXJzZUhUTUw7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6
VGltZXJJbnN0YWxsOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJJbnN0YWxsOworICAgICAgICByZXR1cm4gSW5zcGVjdG9y
OjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJJbnN0YWxsOwogICAgIGNhc2Ug
VGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lclJlbW92ZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVyUmVtb3ZlOworICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZXJS
ZW1vdmU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVyRmlyZToKLSAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVy
RmlyZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVu
dFR5cGU6OlRpbWVyRmlyZTsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpFdmFsdWF0
ZVNjcmlwdDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OkV2YWx1YXRlU2NyaXB0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6RXZhbHVhdGVTY3JpcHQ7CiAKICAgICBjYXNl
IFRpbWVsaW5lUmVjb3JkVHlwZTo6TWFya0xvYWQ6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpNYXJrTG9hZDsKKyAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtMb2FkOwog
ICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpNYXJrRE9NQ29udGVudDoKLSAgICAgICAgcmV0
dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Ok1hcmtET01D
b250ZW50OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2
ZW50VHlwZTo6TWFya0RPTUNvbnRlbnQ7CiAKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6
VGltZVN0YW1wOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxp
bmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90
b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZVN0YW1wOwogICAgIGNhc2UgVGltZWxpbmVS
ZWNvcmRUeXBlOjpUaW1lOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWU7CiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OlRpbWVFbmQ6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lRW5kOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGltZUVuZDsKIAogICAgIGNhc2UgVGltZWxp
bmVSZWNvcmRUeXBlOjpTY2hlZHVsZVJlc291cmNlUmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2FzZSBUaW1lbGluZVJl
Y29yZFR5cGU6OlJlc291cmNlU2VuZFJlcXVlc3Q6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVNlbmRSZXF1ZXN0Owor
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6
UmVzb3VyY2VTZW5kUmVxdWVzdDsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVzb3Vy
Y2VSZWNlaXZlUmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZXNvdXJjZVJlY2VpdmVSZXNwb25zZTsKKyAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlc291cmNl
UmVjZWl2ZVJlc3BvbnNlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpSZXNvdXJjZVJl
Y2VpdmVkRGF0YToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVs
aW5lOjpFdmVudFR5cGU6OlJlc291cmNlUmVjZWl2ZWREYXRhOworICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVzb3VyY2VSZWNlaXZlZERh
dGE7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlJlc291cmNlRmluaXNoOgotICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UmVz
b3VyY2VGaW5pc2g7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpSZXNvdXJjZUZpbmlzaDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRU
eXBlOjpYSFJSZWFkeVN0YXRlQ2hhbmdlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6WEhSUmVhZHlTdGF0ZUNoYW5nZTsKKyAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlhIUlJl
YWR5U3RhdGVDaGFuZ2U7CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6OlhIUkxvYWQ6Ci0g
ICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBl
OjpYSFJMb2FkOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6
OkV2ZW50VHlwZTo6WEhSTG9hZDsKIAogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpGdW5j
dGlvbkNhbGw6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGdW5jdGlvbkNhbGw7CiAgICAgY2FzZSBUaW1l
bGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6UHJvYmVTYW1wbGU7CisgICAgICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpQcm9iZVNhbXBs
ZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29sZVByb2ZpbGU6Ci0gICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpDb25z
b2xlUHJvZmlsZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5l
OjpFdmVudFR5cGU6OkNvbnNvbGVQcm9maWxlOwogCiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5
cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZToKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJlcXVlc3RBbmltYXRpb25GcmFtZTsKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlJl
cXVlc3RBbmltYXRpb25GcmFtZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q2FuY2Vs
QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpU
aW1lbGluZTo6RXZlbnRUeXBlOjpDYW5jZWxBbmltYXRpb25GcmFtZTsKKyAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OkNhbmNlbEFuaW1hdGlv
bkZyYW1lOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU6
Ci0gICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRU
eXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpGaXJlQW5pbWF0aW9uRnJhbWU7CiAKICAgICBjYXNl
IFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0Q3JlYXRlOgotICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OkV2ZW50VHlwZTo6V2ViU29ja2V0Q3JlYXRl
OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6V2ViU29ja2V0Q3JlYXRlOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2Nr
ZXRTZW5kSGFuZHNoYWtlUmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFNlbmRIYW5kc2hha2VSZXF1ZXN0
OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlw
ZTo6V2ViU29ja2V0U2VuZEhhbmRzaGFrZVJlcXVlc3Q7CiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZToKLSAgICAgICAgcmV0dXJu
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFJl
Y2VpdmVIYW5kc2hha2VSZXNwb25zZTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OldlYlNvY2tldFJlY2VpdmVIYW5kc2hha2VSZXNwb25z
ZTsKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29ja2V0RGVzdHJveToKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpFdmVudFR5cGU6Oldl
YlNvY2tldERlc3Ryb3k7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1l
bGluZTo6RXZlbnRUeXBlOjpXZWJTb2NrZXREZXN0cm95OwogICAgIH0KIAotICAgIHJldHVybiBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpUaW1lU3RhbXA7Cisg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVT
dGFtcDsKIH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjphZGRSZWNvcmRUb1RpbWVs
aW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcnBSZWNvcmQsIFRpbWVsaW5lUmVjb3Jk
VHlwZSB0eXBlKQogewotICAgIHBycFJlY29yZC0+c2V0U3RyaW5nKCJ0eXBlIiwgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUodG9Qcm90b2NvbCh0eXBlKSkp
OworICAgIHBycFJlY29yZC0+c2V0U3RyaW5nKCJ0eXBlIiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Z2V0V2ViRW51bUNvbnN0YW50VmFsdWUodG9Qcm90b2NvbCh0eXBlKSkpOwogCi0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50PiByZWNvcmQg
PSBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlRpbWVsaW5lOjpUaW1lbGlu
ZUV2ZW50Pjo6cnVudGltZUNhc3QocHJwUmVjb3JkKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+IHJlY29yZCA9IEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+OjpydW50aW1lQ2Fz
dChwcnBSZWNvcmQpOwogCiAgICAgaWYgKG1fcmVjb3JkU3RhY2suaXNFbXB0eSgpKQogICAgICAg
ICBzZW5kRXZlbnQocmVjb3JkLnJlbGVhc2UoKSk7CkBAIC03MTQsNyArNzE0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZW5kRXZlbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGV2ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogcnVudGltZUNhc3Qg
aXMgYSBoYWNrLiBXZSBkbyBpdCBiZWNhdXNlIHdlIGNhbid0IGJ1aWxkIFRpbWVsaW5lRXZlbnQg
ZGlyZWN0bHkgbm93LgotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpUaW1lbGlu
ZTo6VGltZWxpbmVFdmVudD4gcmVjb3JkQ2hlY2tlZCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+OjpydW50aW1lQ2FzdChldmVu
dCk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2
ZW50PiByZWNvcmRDaGVja2VkID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpU
aW1lbGluZTo6VGltZWxpbmVFdmVudD46OnJ1bnRpbWVDYXN0KGV2ZW50KTsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+ZXZlbnRSZWNvcmRlZChyZWNvcmRDaGVja2VkLnJlbGVhc2UoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAppbmRl
eCBmMDVkNWRhMTUyZTEyNTYxYjM5N2NjZDdmMDEzMTMxYzM3NTJiZjc5Li5iOTlhMDNjNmUwNmZl
OTMyYWM3MzViMzYwMjY1Y2EyODQwOGNhYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5oPgogCi11c2luZyBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247Cit1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247CiAKIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>